2011-01-24 36 views

回答

8

.是一个操作符。 2是一个数字。 x(被视为)属性名称。

浮点数字常量不能有嵌入空格。因此,2 .x是一个表达式,要求将常量2提升为Number对象,然后检查名为“x”的属性。当然没有,所以价值是undefined

您可以更明确一点得到相同的效果与

alert((2).x); 

注意

alert("Hello".x); 

有些类似:在这种情况下,它不是一个数值常量,它是一个不变。它不那么奇怪,因为没有任何涉及句法的有趣业务,但否则解释者在评估时会做类似的事情。字符串常量首先转换为一个String对象,然后获取“x”属性。

编辑 —澄清一点,2.x是之后是标识符“X”的误差,因为它的解析为一个数值常数(“2”),这是一个语法错误;两个值彼此相邻的值并没有介入操作符,因此不会在语言中形成任何类型的构造。

+0

神圣的任务蝙蝠侠。发现得好。这证明了它:`Number.prototype.x =“你好”; alert(2.x);` – mplungjan 2011-01-24 15:44:02