1.Falsy值,當進行邏輯判斷時均爲false(如!!false==false)。六個Falsy值:false、undefined、null、正負0、NaN、""。git
2.其他全部的值均爲Truthy,當進行邏輯判斷時均爲true(如!![]==true)。Infinity、空數組、」0″都是Truthy值。github
MDN非假值文檔數組
轉載2個有趣的例子,點擊標題查看詳細:
一,[] == ![] //true
解析:code
等號右邊有 ! ,優先級比 == 更高,優先計算右邊的結果。 [] 爲非假值,因此右邊的運算結果爲 false。文檔
![] ==> false
== 的任意一邊有 boolean 類型的值時先把這個值轉換成 number 類型,右邊轉換成了 0。字符串
Number(false) ==> 0
== 的兩邊分別是 number 和 object 類型的值時,把 object 轉換成 number 類型,須要對 object 進行 ToNumber 操做。get
Number([].valueOf()) ==> 0
二,++[[]][+[]]+[+[]]//"10"
解析:
1.++[[]][+[]]+[+[]]==>string
++[[]][+[]] + [+[]]
2.由於+[] === 0,因此原式==>it
++[[]][0] + [0]
3.由於 [[]][0] 的意思是:獲取 [[]] 的第一個元素,返回[[]]的第一個數組[],原式==>io
1 + [0]
4.當數組只有一個元素時,返回結果就是它自身的第一個元素,原式==>
1+"0"==>"10"//字符串