【JS】falsy与truthy

1.Falsy值,当进行逻辑判断时均为false(如!!false==false)。六个Falsy值:false、undefined、null、正负0、NaN、""。git

2.其他全部的值均为Truthy,当进行逻辑判断时均为true(如!![]==true)。Infinity、空数组、”0″都是Truthy值。github

MDN非假值文档数组

转载2个有趣的例子,点击标题查看详细:
一,[] == ![] //true
解析:code

  1. 等号右边有 ! ,优先级比 == 更高,优先计算右边的结果。 [] 为非假值,因此右边的运算结果为 false。文档

![] ==> false
  1. == 的任意一边有 boolean 类型的值时先把这个值转换成 number 类型,右边转换成了 0。字符串

Number(false) ==> 0
  1. == 的两边分别是 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"//字符串
相关文章
相关标签/搜索