1

56.toString動作しないと例外がスローされます。56..toString正常に動作します 。

これら2つのステートメントの違いは何ですか?

56.toString(); //throws exception
56..toString(); //Works Fine.

使い方?

4

3 に答える 3

3

.プロパティへのアクセスが小数点と混同される可能性があるため、数値リテラルは多少特殊です。.

パーサーが遭遇56.すると、数字が続く (または何もない) と予想されます。あなたが書くとき、あなたはの56..toString()を得ていますtoString()56.0

于 2012-11-26T07:00:22.293 に答える
2

これは toString() メソッドでは問題ではなく、56 だけです。toString は 56.0 であると認識しますが、「0」がないため、失敗します。

正常に動作するか、次のようになります。

(56.).toString()

また

56..toString()
于 2012-11-26T07:22:40.030 に答える
0

ここでの問題は、入力するときです

56.toString()

JavaScript は 56 を変数名と見なし、その toString() メソッドにアクセスしようとしています。しかし、56 は変数ではなく、有効な変数名でさえないため、これは機能せず、コンパイル エラーが発生します。(変数名は文字で始まる必要があります)

JS変数の命名規則はこちら

しかし、56 (56.) の後ろにドットを追加すると、数値リテラルになり、言語はそのために Number クラスのインスタンスを作成し、Number インスタンスで toString() メソッドを解決しようとします。Number クラスは toString() というメソッドを定義しているため、それは機能します。

56..toString();

に等しい

(new Number(56.)).toString();

ここで理解する鍵は、数値リテラル (56.) とメソッド アクセス演算子 (variable.methodName() ) の違いです。

于 2012-11-26T07:58:02.763 に答える