2012-10-03 53 views
2

爲什麼第一行給出錯誤,儘管第二行和第三行工作正常?1.toString()Javascript中的SyntaxError

1.toString(); // SyntaxError 
(1).toString(); // OK 
1['toString'](); // OK 
+1

而「他們」想讓javascript嚴格鍵入! – RobG

+0

別擔心他。規範作者正在嚴格打印。 – ambodi

回答

11

解析器正試圖把1.作爲浮點文字的開始 - 只有toString把它變成一個無效的號碼。

比較:

1.0.toString() 
11

.呈現不確定性。它是一個小數,還是屬性訪問器?

解釋器將其視爲小數,因此您可以使用..來同時允許小數和屬性語法。

1..toString(); 

或者使用您顯示的其他方式之一來解決歧義。

0

(1).toString()中,(1)強制它在.toString()之前評估,因此它工作。 在1.toString()中,1不是有效的標識符,因此它不起作用。