1.Falsy值,当举行逻辑推断时均为false(如!!false==false)。六个Falsy值:false、undefined、null、正负0、NaN、””。
2.其他一切的值均为Truthy,当举行逻辑推断时均为true(如!![]==true)。Infinity、空数组、”0″都是Truthy值。
转载2个风趣的例子,点击题目检察细致:
一,[] == ![] //true
剖析:
等号右侧有 ! ,优先级比 == 更高,优先盘算右侧的效果。 [] 为非假值,所以右侧的运算效果为 false。
![] ==> false
== 的恣意一边有 boolean 范例的值时先把这个值转换成 number 范例,右侧转换成了 0。
Number(false) ==> 0
== 的双方分别是 number 和 object 范例的值时,把 object 转换成 number 范例,需要对 object 举行 ToNumber 操纵。
Number([].valueOf()) ==> 0
二,++[[]][+[]]+[+[]]//”10″
剖析:
1.++[[]][+[]]+[+[]]==>
++[[]][+[]]
+
[+[]]
2.由于+[] === 0,所以原式==>
++[[]][0]
+
[0]
3.由于 [[]][0] 的意义是:猎取 [[]] 的第一个元素,返回[[]]的第一个数组[],原式==>
1
+
[0]
4.当数组只要一个元素时,返回效果就是它本身的第一个元素,原式==>
1+"0"==>"10"//字符串