2014-01-30 55 views
0

喜讀的書關於JS和無法理解接下來的事情原始對話:對象在JavaScript

2 + null // => 2: addition after null converts to 0 
2 + undefined // => NaN: addition after undefined converts to NaN 

我讀到有關如何使用toString()和的valueOf()JS對象轉換爲primirive值,但null和undefined沒有這樣的方法 - 所以它是如何工作的?謝謝。

回答

1

您可以參閱,例如:http://www.adequatelygood.com/Object-to-Primitive-Conversions-in-JavaScript.html

......然而,這需要更多的解釋的關鍵機制是ToPrimitive功能。該函數用於取一個任意值並取而代之相應的原始值。如果輸入已經是一個原始值,那麼該值將被返回而不進行轉換。但是,如果該值是非原始的,那麼它將調用內部[[DefaultValue]]方法來查找該對象的默認值。

總之,這是內部機制。

+0

謝謝,文中有一個很好的解釋。 – Simcha