在JavaScript中,“1..something”是什么意思?

时间:2010-02-19 22:58:40

标签: javascript

<script>
1..z
</script>

这不会产生语法或运行时错误。看起来数字和变量名称可以是任何其他名称(123..qwerty)。我想知道这句话是什么意思?

2 个答案:

答案 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