2016-08-16 52 views
9

發生了什麼事在JavaScript控制檯,如果鍵入如下:(1)的ToString()和1.toString()內的Javascript

1.toString(); // Uncaught SyntaxError: Invalid or unexpected token 
(1).toString(); // "1" 

什麼是JS裏面的編譯器的事情與這兩種說法?

+8

我們必須告訴了點是否小數部分或者對象屬性的分離。 –

+1

1.toString()//這會給出錯誤,因爲在基本數據類型上沒有tostring方法Number/interger 但是當你做(1).toString()時,然後javascript在內部輸入corresion並將數字1轉換爲字符串「1」,然後在其上應用toString方法。 – atul

+0

「1」.toString(); //「1」。你的理解是有道理的。但是如果function(){}() // Unexpected token. and (function(){}()) // It's OK.爲什麼不能直接調用匿名函數呢?@ÁlvaroGonzález – soarinblue

回答

13

()是分組運算符,它返回其中表達式的值。在你的情況下,它是1,一個原始數字。所以它可以被裝箱到一個Number對象並且調用它的方法toString

但是對於1.toString(),JS引擎無法確定.的含義 - 點運算符(用於對象方法)還是浮點數點?

爲了解決這種混亂,沒有進行分組操作,你有兩種方法:

  • 1 .toString() //一個空格,可以作爲分組操作類似
  • 1..toString() //兩個點,其中第二個是作爲點運算處理
+1

'1.0。toString()'也可以。 –

13

1.toString().

(1).toString()後處理1爲一個整數,並期望數目,(1)是其中.用於調用方法的表達式。

2

同意@Prajeet@Leo

property accessor解釋 - 點標記

1 //Next Line 
.toString() //Prints "1" 

從Mozilla.org: enter image description here