2014-09-24 208 views
0

我最近簽出了一個JavaScript混淆的指南。本指南中有幾個簡單的步驟。我可以理解$ = []是一個空數組,我可以理解爲什麼$=[$=[]]; $變成0後,但我不明白爲什麼在添加!$(false)和$(零)後我們得到「false」字符串。 任何人都可以解釋這個給我嗎?瞭解javascript混淆

在此先感謝。

+1

'$ = $ = []'是一樣的'$ = [ ]。 $ = [$]',即'$ = [[]]''。 – kay 2014-09-24 18:29:04

+0

'!$ + $ == false + [[]] == toString(false)+ toString([[]])==「false」+「」==「false」 – georg 2014-09-24 19:13:48

回答

0

我可以理解爲什麼$ = [$ = []]; $變爲0

不,它不。 $變成[[]],即空陣列的陣列。

我不明白爲什麼加入後!$(假)和$(零),我們得到「假」串

你就是不聽。但你的前提是錯誤的。當添加false[[]]但是你在一個布爾值和對象,這將導致字符串連接使用+ operator

> $ = [[]]; 
> String(!$) 
"false" 
> String($) 
"" 
> !$+$ 
"false"