2013-07-21 213 views
4

最近我一直在用node.js進行試驗,並且發現javascript有一些句法邏輯,我無法包裹頭部。這是一個我不明白的例子,我想知道這是不是一個隨機的JavaScript事實,或者是否有任何邏輯。爲什麼[] + []返回空字符串?

回答

8

加號是算術加號或字符串連接。在[] + []的情況下,空數組轉換爲空字符串。

Array的toString方法將返回一個字符串,它是所有數組元素的逗號分隔列表。

從MDN參考上面的:

的JavaScript自動調用toString方法時的陣列被表示爲文本值或當一個陣列被在一個字符串連接提及。

自動類型轉換的同樣的想法就是爲什麼true + true === 2,並類型轉換爲許多棘手的JavaScript測驗像this one的基礎。

+3

+1本質上是正確的答案。正確地說,數組被轉換爲字符串(通過調用'toPrimitive()'),而不是轉換。請參閱[EcmaScript規範](http://es5.github.io/#x11.6.1) –

+0

@TedHopp - 感謝您的收穫。稍微擴大了答案。 –

3

對於非基元類型(如數組),爲了應用加法,必須將其轉換爲基元ToPrimitive,對非基元類型將調用toString()。因此,在這種情況下[]變成「」,因此「」,結果。

相關問題