1. ホーム
  2. ジャバスクリプト

[解決済み】なぜ◎ܫ◎と☺はJavaScriptの変数名として有効ではないのでしょうか?

2022-03-23 08:33:01

質問

Internet Explorerでは(残念ながら私がテストした他のブラウザでは)、いくつかのユニコード変数名を使用できることに気づきました。これは私の一日の始まりで、このようにユニコードの入った楽しいコードを書けることに絶対の喜びを感じています。

var ктоείναι草泥马 = "You dirty horse.",
    happy☺n☺mat☺p☺eia = ":)Yay!",
    ಠ_ಠ = "emoticon";

alert(ктоείναι草泥马 + happy☺n☺mat☺p☺eia + ಠ_ಠ);

なぜか、ですが。 ◎ܫ◎ , ♨_♨ は有効な変数名ではありません。

なぜ ಠ_ಠ草泥马 は動作しますが ◎ܫ◎ , ♨_♨ はないのですか?

EDIT: ブラウザでテストしてみましょう。 JSFiddle . Internet Explorer 9、Chrome、Firefox、Operaでテストしてみました。今のところ、Internet Explorer 9でのみ動作するようです。(Internet Explorer 8以下はわかりません。) 他のブラウザで動いたら教えてください。

解決するには?

ಠ_ಠ と草泥马は、実際のアルファベットで使われる文字だけを含んでいます。 の記号です。 カンナダ語のアルファベット 草泥马は中国語の文字で構成されています。

しかし、◎と☺は純粋な記号であり、どのアルファベットとも関連付けられていない。

ECMAScript標準、7.6章 (Internet Explorerを除くすべてのブラウザが準拠しています)では、識別子は次のいずれかで始まる必要があるとされています。

  • ユニコード文字
  • $ または _
  • \ の後にユニコードのエスケープシーケンスが続きます。

識別子の次の文字は、以下のいずれかでなければならない。

  • 冒頭で許可された文字のいずれか
  • Unicodeのコンバイニングマーク
  • Unicodeの数字
  • Unicodeコネクタ句読点
  • ゼロ幅非ジョイナー
  • ゼロ幅ジョイナー

IEは標準を超え、☺などいくつかの記号を許容する寛容さを備えています。

そこには ツール は、入力した文字列が ECMAScript 5.1 および Unicode 6.1 に従って有効な JavaScript 変数名であるかどうかを教えてくれます。