私はJSでの作業を開始して以来、私はリテラルの数に機能を呼び出すための唯一の方法を考えたがそうのように、括弧でそれをラップすることにより、表現の位置にそれを置くことです:JSの数値リテラルで関数を呼び出すルールは何ですか?
1.toString();
// SyntaxError: identifier starts immediately after numeric literal
(1).toString();
// "1"
今日、それを
0.1.toString();
// "0.1"
これはなぜ機能しますか?公式スペックへのポインタは素晴らしいでしょう。
編集曖昧さが私の最初の考えでしたが、その後1.toString()
にもあいまいさがないと判断されました。それは私が最初に思ったより深いですが、私はまだ私が正しいと思います。 は数字で始まる
var obj = { "1" : 1, "2" : 2 };
プロパティ名のみが角括弧また
obj.1;
// SyntaxError: Unexpected token ILLEGAL
obj['1'];
// 1
で参照することができる数字で始めることができ
プロパティ名:なぜここにあります
1['toString']();
// '1'
したがって、1.
に続く任意の非数字は、常にメソッド呼び出しまたはプロパティアクセスであり、決して10進数ではありません。同様に、1.
に続けて任意の数字を指定すると、常に10進数になりますが、メソッド呼び出しやプロパティアクセスにはなりません。
注: '.toString()'を使うことができます。最初の '.'は小数点を示し、2番目は小数点を示します。 – zzzzBov
関連:http://stackoverflow.com/q/2300197 – CMS
賢い、ありがとうzzzzBovとCMS。 – mwcz