56.toString
動作しないと例外がスローされます。56..toString
正常に動作します 。
これら2つのステートメントの違いは何ですか?
56.toString(); //throws exception
56..toString(); //Works Fine.
使い方?
56.toString
動作しないと例外がスローされます。56..toString
正常に動作します 。
これら2つのステートメントの違いは何ですか?
56.toString(); //throws exception
56..toString(); //Works Fine.
使い方?
.
プロパティへのアクセスが小数点と混同される可能性があるため、数値リテラルは多少特殊です。.
パーサーが遭遇56.
すると、数字が続く (または何もない) と予想されます。あなたが書くとき、あなたはの56..toString()
を得ていますtoString()
56.0
これは toString() メソッドでは問題ではなく、56 だけです。toString は 56.0 であると認識しますが、「0」がないため、失敗します。
正常に動作するか、次のようになります。
(56.).toString()
また
56..toString()
ここでの問題は、入力するときです
56.toString()
JavaScript は 56 を変数名と見なし、その toString() メソッドにアクセスしようとしています。しかし、56 は変数ではなく、有効な変数名でさえないため、これは機能せず、コンパイル エラーが発生します。(変数名は文字で始まる必要があります)
しかし、56 (56.) の後ろにドットを追加すると、数値リテラルになり、言語はそのために Number クラスのインスタンスを作成し、Number インスタンスで toString() メソッドを解決しようとします。Number クラスは toString() というメソッドを定義しているため、それは機能します。
56..toString();
に等しい
(new Number(56.)).toString();
ここで理解する鍵は、数値リテラル (56.) とメソッド アクセス演算子 (variable.methodName() ) の違いです。