2010-02-19 165 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