let
キーワードで有効なユニコードエスケープシーケンスを使用していますか?letキーワードでUnicodeエスケープが有効です
次のコードは有効ですか?
l\u0065t a = 1;
このコードには同等です:
let a = 1;
let
キーワードで有効なユニコードエスケープシーケンスを使用していますか?letキーワードでUnicodeエスケープが有効です
次のコードは有効ですか?
l\u0065t a = 1;
このコードには同等です:
let a = 1;
ません。
ECMAScriptでは、文字列リテラル、テンプレートリテラルおよび正規表現リテラル(これまでの予想通り)、およびeven in identifier names(more details)のUnicodeエスケープシーケンスが許可されています。しかし、それはraw source text で許可されないので、キーワード、他のトークン、空白などを形成することはできません。
(これはES5から変更されていないあなたはまた、var
でエスケープシーケンスを使用することを、許可、および許可されていないことを継続していなかった。。)
1:一つは、もちろん何かを解釈する実装を想像できます(エスケープ文字を含む)を使用してソーステキストを得ることができますが、これはa)とb)ECMAScriptの範囲外です。文字列をJSON.parse
とeval
に渡すと考えてください。そのような文字列にはl\u0065t
が含まれている可能性があります。
2:これのようなもの(実際に意味をなされるところ)の実際の例は、<script>
タグのHTMLエンティティです。
私はあなたの例をES5の予約語ではないものに変更します。標準では、エスケープシーケンスは予約語には使用できないと具体的に述べています。 – programmerjake
@programmerjake:それはありますか?私はそれを逃した、あなたは私にそれを指摘できますか? – Bergi
11.6.2の注記を参照してください。http://www.ecma-international.org/ecma-262/6.0/#sec-reserved-words – programmerjake
あなたはそれを試してみませんか? –
@PedroLobitoこれは言語弁護士の質問です。実装が間違っている可能性があります。 – Oriol
標準はこの分野で多少あいまいだと思われます。 'let'は予約語の文法にはありません。 google chromeのV8は無効だと言っています。 – programmerjake