2012-02-21 50 views
11

如果我嘗試寫爲什麼我無法使用單個點訪問整數屬性?

3.toFixed(5) 

有語法錯誤。使用雙點,放置一個空格,將三個放在括號中或使用括號表示可以正常工作。

3..toFixed(5) 
3 .toFixed(5) 
(3).toFixed(5) 
3["toFixed"](5) 

爲什麼單點符號不起作用,我應該使用哪一種替代方法呢?

+0

請注意,問題只出現在整數文字中 - 小數點很樂意調用任何方法。 3.14.toFixed(2)。 – kennebec 2012-02-21 15:36:48

+0

@kennebec好點,我編輯問題標題說整數,而不是數字。 – 2012-02-21 15:37:56

+0

相關,如果不是重複:[爲什麼數字文字不能訪問數字方法?](http://stackoverflow.com/q/4046342/1048572) – Bergi 2016-02-28 10:40:38

回答

16

週期是多少的一部分,所以代碼將被解釋一樣:

(3.)toFixed(5) 

這自然會給出一個語法錯誤,因爲你不能緊跟與標識符的數量。

任何方法,保持解釋作爲數字的一部分的時期將工作。我認爲最明顯的方法是在括號中加上括號:

(3).toFixed(5) 
7

由於JavaScript標記器中存在缺陷,您無法訪問它。 JavaScript嘗試解析一個號碼作爲浮點字面點符號,所以你不能用一個屬性或方法遵循它:

2.toString(); // raises SyntaxError

正如你提到的,有一對夫婦的解決方法,其能用於使數字文字也起到對象的作用。其中任何一個都是同樣有效的。

2..toString(); // the second point is correctly recognized 
2 .toString(); // note the space left to the dot 
(2).toString(); // 2 is evaluated first 

要了解更多的使用對象和屬性背後,退房Javascript Garden

+4

大多數答案實際上是重複的事情,OP已經說過。 。 。 – ruakh 2012-02-21 15:25:07

+0

但他解釋了爲什麼它可以工作,例如沒有隱式轉換正在工作。 – 2012-02-21 15:29:55

+0

我不認爲「tokenizer」是正確的詞。 – georg 2012-02-21 15:41:57

3

它不工作,因爲JavaScript解釋3.爲是一個浮點常量的開始(如3.5),或者一個整個浮點常數(與3. == 3.0),所以你不能按照它的標識符(在你的情況下,一個屬性名稱)。它未能認識到您希望3.是兩個單獨的標記。

您的任何解決方法對我來說都很好。

+0

+1完全有道理! – Meysam 2012-02-21 15:32:21

相關問題