<script>
1..z
</script>
这不会产生语法或运行时错误。看起来数字和变量名称可以是任何其他名称(123..qwerty
)。我想知道这句话是什么意思?
答案 0 :(得分:33)
不一个范围,1..z
表达式只返回undefined
。
为什么呢?
第一个点结束Numeric Literal的表示,为您提供Number
原语:
var n = 1.;
Numeric Literal的语法表达如下:
DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt
如您所见,点后面的DecimalDigits部分是可选(opt后缀)。
第二个点是属性访问器,它只会尝试获取z
属性undefined
,因为Number.prototype
对象上不存在该属性:
1..z; // undefined
1..toString(); // "1"
等效于使用括号表示法属性访问者访问属性:
1['z']; // or
1['toString']();
答案 1 :(得分: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