2010-02-19 143 views

回答

33

一個範圍內,1..z表達只會返回undefined

爲什麼?

第一點結束的Numeric Literal的表示,給你一個Number原始:

var n = 1.; 

數字文字的語法是這樣表示:

DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 

正如你所看到的點後的DecimalDigits部分爲可選(opt後綴)。

第二點是屬性訪問器,它只會設法得到z屬性,它是undefined,因爲它不Number.prototype對象上存在:

1..z; // undefined 
1..toString(); // "1" 

就等於訪問屬性與支架符號屬性訪問:

1['z']; // or 
1['toString'](); 
+1

感謝化解誤傳 – spender 2010-02-19 23:11:16

+0

真棒答案。 – Nicole 2010-02-19 23:11:17

+0

謝謝!非常好的解釋。 – Roman 2010-02-19 23:15:12

5

結合這些:

alert(1.foo); // --> parse error 
alert(1.4.foo); // --> undefined - number 1.4 doesn't have the property foo 
alert(1.); // --> 1 (?) 

這樣的結論:

alert(1..foo); // --> undefined 
相關問題