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

Rom*_*man 13 javascript

<script>
1..z
</script>
Run Code Online (Sandbox Code Playgroud)

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

CMS*_*CMS 33

不是一个范围内,1..z表达将简单地返回undefined.

为什么?

第一个点结束了Numeric Literal的表示,为您提供了一个Number原语:

var n = 1.;
Run Code Online (Sandbox Code Playgroud)

Numeric Literal的语法表达如下:

DecimalIntegerLiteral . DecimalDigitsopt ExponentPartopt 
Run Code Online (Sandbox Code Playgroud)

正如您可以看到点后面的DecimalDigits部分是可选的(opt后缀).

第二个点是属性访问器,它只会尝试获取z属性,这是undefined因为它不存在于Number.prototype对象上:

1..z; // undefined
1..toString(); // "1"
Run Code Online (Sandbox Code Playgroud)

相当于使用括号表示法属性访问器访问属性:

1['z']; // or
1['toString'](); 
Run Code Online (Sandbox Code Playgroud)


Kob*_*obi 5

结合这些:

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

得出结论:

alert(1..foo); // --> undefined
Run Code Online (Sandbox Code Playgroud)