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"//字符串