摘要:为非假值,所以右边的运算结果为。的两边分别是和类型的值时,把转换成类型,需要对进行操作。
1.Falsy值,当进行逻辑判断时均为false(如!!false==false)。六个Falsy值:false、undefined、null、正负0、NaN、""。
2.其余所有的值均为Truthy,当进行逻辑判断时均为true(如!![]==true)。Infinity、空数组、”0″都是Truthy值。
MDN非假值文档
转载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"//字符串
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/80435.html
摘要:如果我们把非布尔值作为条件呢打开控制台并运行上述代码,会打印说明条件为真值。在中,真值指的是在布尔值上下文中转换后的值为真的值。两个能够建立元素间一一对应的集合称为互相对等集合。 showImg(https://segmentfault.com/img/bVbtSvt?w=720&h=360); 为了保证可读性,本文采用音译而非直译。 Javascript 一直是神奇的语言。 不相信我...
摘要:原文测试对象包装基础数据类型没有属性和方法,为了使用方法和函数,就需要对应的对象包装它。注意,用构造器构造的对象,永远是。它们都是对象。它们都是非空字符串。 原文 You Dont Know JS: Types & Grammar 测试 console.log(1+ 2+2); console.log(1+ +2+2); console.log(A- B+2); console.log...
摘要:知道如果我们将输入数组中的每个值都转换为布尔值,就可以删除所有值为的元素,这就满足了此挑战的要求。 翻译:疯狂的技术宅https://medium.freecodecamp.o... 本文首发微信公众号:前端先锋欢迎关注,每天都给你推送新鲜的前端技术文章 引用自 MDN: falsy(虚值)是在 Boolean 上下文中已认定可转换为‘假‘的值.JavaScript 在需要用到布...
摘要:如果你想了解更多关于强制类型转换的信息,你可以读一读的这篇文章。在只使用的情况下,所带来的强制类型转换使得判断结果跟踪变得复杂,下面的例子可以看出这样的结果有多怪了明智地使用真假判断当我们在一个条件语句中使用变量或表达式时,会做真假判断。 说明 如果本文档中有任何错误的、不符合行规的,敬请斧正。 引言 不管有多少人共同参与同一项目,一定要确保每一行代码都像是同一个人编写的。...
阅读 954·2021-11-17 09:33
阅读 414·2019-08-30 11:16
阅读 2467·2019-08-29 16:05
阅读 3350·2019-08-29 15:28
阅读 1392·2019-08-29 11:29
阅读 1947·2019-08-26 13:51
阅读 3384·2019-08-26 11:55
阅读 1203·2019-08-26 11:31