2012-04-23 14 views
1

アラート(010)、結果は8です。なぜですか? 私はecmascript 7.8.3数値リテラルを読んでいます。 Numeric Literals Lexicalによると、 010は無効な数値リテラルです。数字についてリテラル

答えて

4

strictモードがオンになっている場合にのみそうだ:

(function(){ 
"use strict"; 
010; 
})(); 
SyntaxError: Octal literals are not allowed in strict mode. 

それ以外の場合は、下位互換性を破ります。

+0

ecmascriptは数値リテラルの8進数を定義しないことを意味しますか?それはjsエンジンの余分な拡張ですか? – user1039304

+0

@ user1039304はい、それは現在のecmascriptの拡張であり、それは非厳密モードでのみ許可されています。 – Esailija

0

010(8進数)は、小数点では8です。それが無効であると言われたら(リンクはどこですか?)、変更されているかもしれません。あるいは、別のバージョンの "ECMAScript"ではないでしょうか?

多くのプログラミング言語では、数値リテラルの前には0が8進数になります。

+0

ecmascriptは数値リテラルの8進数を定義しません。 私は010が無効な数字のリテラルであると思います – user1039304

関連する問題