簡體   English   中英

符號:隱式字符串轉換在JavaScript中如何工作?

[英]Symbols: How does implicit string conversion work in JavaScript?

閱讀JavaScript中有關Symbol的文檔,並在一些環境(Chrome,Firefox,Node.js)中進行測試,我意識到我對隱式字符串轉換的理解是有缺陷的。

我總是給人一種印象,即嘗試轉換為字符串時會調用對象的toString()方法,如果該函數未返回原語,則它將調用對象的toPrimitive()方法,如果未返回工作它將類型錯誤。 但是,此說明未能涵蓋Symbol引發的TypeError

 var sym = Symbol("test"); try { console.log(sym + "ing"); } catch (error) { console.error(error); } 

TypeError: Cannot convert a Symbol value to a string

但是很明顯Symbol擁有有效的toString()方法。 那么為什么不叫它呢?

沒錯,在執行隱式字符串轉換時會調用一個對象toString方法。 但是, 如規范所述 ,對符號進行隱式字符串轉換會導致TypeError

正如Axel Rauschmayer博士所說

鑒於字符串和符號都可以作為屬性鍵,因此您希望保護人們避免將符號意外轉換為字符串。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM