2017-06-08 127 views
3

爲什麼Symbol('test').toString()工作正常,但我不能使用'' + Symbol('test')爲什麼不能將符號值轉換爲字符串

它會拋出錯誤:

cannot convert a Symbol value to a string

爲什麼會隱式類型轉換無法正常工作?爲什麼代碼不等於'' + Symbol('test').toString()

+0

對不起,我的意思是爲什麼隱式類型轉換不起作用?爲什麼代碼不等於'''+符號('test')。toString()' – SkyAo

+0

請閱讀https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Symbol_type_conversions解釋 –

+1

相關:[將JavaScript符號轉換爲字符串?](https://stackoverflow.com/questions/40944470/convert-javascript-symbol-to-string) –

回答

10

根據ECMA-262,在數值使用addition operator類型符號結合字符串值首先調用內部ToPrimitive,它返回該符號。然後它調用內部ToString,對於符號,它將引發TypeError異常。

所以調用內部ToString是不一樣的調用Symbol.prototype.toString

所以我想答案:

Why does the implicit type conversion not work?

是 「因爲規範是這麼說的」。

0

你的類型不串

'' + Symbol('test').toString() 

你可以檢查,符號是一種新型的ES6

https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/Symbol

The Symbol() function returns a value of type symbol, ..... 
+0

我想OP是問爲什麼JavaScript給出了一個錯誤,而不是將'Symbol'自動轉換爲字符串,因爲它是串聯的數字,因爲'.toString()'方法工作正常。 –

+0

對不起,我的意思是爲什麼隱式類型轉換不起作用?爲什麼代碼不等於''+ Symbol('test')。toString() – SkyAo

相關問題