2011-01-24 38 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