爲什麼要將顯式調用String
構造函數與隱式字符串求值true
進行比較,但是添加new
關鍵字使其在深等於上評估false
,但true
又等於淺等於?這爲什麼評價爲錯誤?
> "hello"===String("hello")
true
> "hello"==new String("hello")
true
> "hello"===new String("hello")
false
編輯:後進一步測試,這似乎與具有隱含的構造函數所有類型的發生。
編輯2:澄清,這不是==
與===
的問題,但隱含的對顯示的構造函數中的一個。
'的typeof 「你好」'→' 'string'','typeof運算新字符串( 「你好」)'→'' object'' – Biffen
''==只爲值檢查(' 「4」 == 4 > true'),但'==='也檢查類型。 ('「4」=== 4> false'),因爲一個是字符串,另一個是數字。 –
@ibrahimmahrir:他們都檢查類型。如果發現類型不一樣,那麼'=='會輸入一個類型強制算法。如果'=='只檢查了這個值,那麼'4 ==「4」'就是'false'。 –