2014-06-18 51 views
-9

您好我讀的文章,發現很奇怪的結果在javascript回報2什麼是!+ [] +!+ []在JavaScript中?

!+[]+!+[] 

任何人都可以請解釋一下下面的代碼。

+2

其實,它返回2:http://jsfiddle.net/2ZQC6/ – Hazaart

+2

我自己得到'2'。因爲用'+'強制轉換爲數字的空數組爲零,所以'!0'爲'true',並將其轉換爲'1'。 '1 + 1 = 2'。 –

+4

Ug,不是這些中的另一個。 – j08691

回答

6

打破錶達到正確的操作順序,你必須:第一

(!(+[])) + (!(+[])) 

第一件事,[]+,導致0轉換爲數值。不要問我爲什麼,它只是:p可能埋在規範的某個地方。

!0簡直是true

所以你最終true + true,再次強制轉換爲數字,導致1 + 1 = 2

要獲得九,你需要重複9:

!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[]+!+[] == 9 
+0

@ j08691沒關係,我不能算XD –