2016-05-21 8 views
3

letキーワードで有効なユニコードエスケープシーケンスを使用していますか?letキーワードでUnicodeエスケープが有効です

次のコードは有効ですか?

l\u0065t a = 1; 

このコードには同等です:

let a = 1; 
+0

あなたはそれを試してみませんか? –

+0

@PedroLobitoこれは言語弁護士の質問です。実装が間違っている可能性があります。 – Oriol

+0

標準はこの分野で多少あいまいだと思われます。 'let'は予約語の文法にはありません。 google chromeのV8は無効だと言っています。 – programmerjake

答えて

3

ません

ECMAScriptでは、文字列リテラル、テンプレートリテラルおよび正規表現リテラル(これまでの予想通り)、およびeven in identifier namesmore details)のUnicodeエスケープシーケンスが許可されています。しかし、それはraw source text で許可されないので、キーワード、他のトークン、空白などを形成することはできません。

(これはES5から変更されていないあなたはまた、varでエスケープシーケンスを使用することを、許可、および許可されていないことを継続していなかった。。)

1:一つは、もちろん何かを解釈する実装を想像できます(エスケープ文字を含む)を使用してソーステキストを得ることができますが、これはa)とb)ECMAScriptの範囲外です。文字列をJSON.parseevalに渡すと考えてください。そのような文字列にはl\u0065tが含まれている可能性があります。
2:これのようなもの(実際に意味をなされるところ)の実際の例は、<script>タグのHTMLエンティティです。

+0

私はあなたの例をES5の予約語ではないものに変更します。標準では、エスケープシーケンスは予約語には使用できないと具体的に述べています。 – programmerjake

+0

@programmerjake:それはありますか?私はそれを逃した、あなたは私にそれを指摘できますか? – Bergi

+0

11.6.2の注記を参照してください。http://www.ecma-international.org/ecma-262/6.0/#sec-reserved-words – programmerjake

関連する問題