【JS】falsy与truthy

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

2.其他一切的值均为Truthy,当举行逻辑推断时均为true(如!![]==true)。Infinity、空数组、”0″都是Truthy值。

MDN非假值文档

转载2个风趣的例子,点击题目检察细致:
一,[] == ![] //true
剖析:

  1. 等号右侧有 ! ,优先级比 == 更高,优先盘算右侧的效果。 [] 为非假值,所以右侧的运算效果为 false。

![] ==> false 
  1. == 的恣意一边有 boolean 范例的值时先把这个值转换成 number 范例,右侧转换成了 0。

Number(false) ==> 0 
  1. == 的双方分别是 number 和 object 范例的值时,把 object 转换成 number 范例,需要对 object 举行 ToNumber 操纵。

Number([].valueOf()) ==> 0

二,++[[]][+[]]+[+[]]//”10″
剖析:
1.++[[]][+[]]+[+[]]==>

++[[]][+[]]
+
[+[]]

2.由于+[] === 0,所以原式==>

++[[]][0]
+
[0]

3.由于 [[]][0] 的意义是:猎取 [[]] 的第一个元素,返回[[]]的第一个数组[],原式==>

1
+
[0]

4.当数组只要一个元素时,返回效果就是它本身的第一个元素,原式==>

1+"0"==>"10"//字符串
    原文作者:Mamami
    原文地址: https://segmentfault.com/a/1190000006963995
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞