19

数字の先頭に 0-s がある js ロジックを理解したいだけです。例えば

var x = 09.3
// here x == 9.3
// other example
09.3 == 9.3
// returns true

// but check this one
var x = 02.5
// Uncaught SyntaxError: Unexpected number
// or this one
02.5 == 2.5 
// same error here

それがどのように機能するか、最初の例でなぜ機能し、先行ゼロを無視するのか、誰でも説明できますが、2 番目の例では SyntaxError が返されます

ありがとうございました

4

3 に答える 3

31

数値リテラルの先頭は、2桁目がまたはでない限り0、8 進整数が意図されていることを示します。その場合、先頭は無視されます。890

8 進数値リテラルは整数でなければならないため、02.5は誤りです。

この動作は 2014 年に Firefox のバグとして記録されましたが、世の中には非常に多くの JavaScript コードがあり、その多くは (おそらく不注意で)09.3構文エラーではないことに依存しているため、バグは「WONTFIX」とマークされました。

以下のコメントで指摘されているように、「strict」モードでは、8 進定数は完全に許可されません。

于 2016-01-27T21:15:14.003 に答える