资讯专栏INFORMATION COLUMN

js双等号探索(一): [] == ![]为Ture ?

CollinPeng / 1093人阅读

摘要:所以为第四步转成根据文档比较操作符当比较数字和字符串时,字符串会转换成数字值。尝试将数字字面量转换为数字类型的值。最后位所以为其他链接

[] == ![] //为True
第一步 转成[] == false

根据 MDN Web 文档-运算符优先级:[https://developer.mozilla.org...
](https://developer.mozilla.org...

!的优先级为16 ,=的优先级为10!的优先级更高,所以先运行![]false

[] == false
第二步 转成[] == 0

根据 MDN Web 文档-比较操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

如果其中一个操作数为布尔类型,那么布尔操作数如果为true,那么会转换为1,如果为false,会转换为整数0,即0。
所以![]false0.
[] == 0
第三步 转成"" == 0

根据 MDN Web 文档-比较操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

如果一个对象与数字或字符串相比较,JavaScript会尝试返回对象的默认值。操作符会尝试通过方法valueOf和toString将对象转换为其原始值(一个字符串或数字类型的值)。
所以[].valueOf().toString()""
"" == 0
第四步 转成0 == 0

根据 MDN Web 文档-比较操作符:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/Comparison_Operators

当比较数字和字符串时,字符串会转换成数字值。 JavaScript 尝试将数字字面量转换为数字类型的值。
Number("")0
0 == 0

最后0==0True,所以[] == ![]Ture

其他链接

https://raoenhui.github.io/js/2018/09/22/compare1/

https://raoenhui.github.io/js/2018/09/23/compare2/

https://raoenhui.github.io/js/2018/09/28/compare3/

Happy coding .. :)

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/108546.html

相关文章

  • js等号探索(三): [] == falseTrue,而!![] == falseFalse

    摘要:所以为为第二步转成根据文档比较操作符如果一个对象与数字或字符串相比较,会尝试返回对象的默认值。尝试将数字字面量转换为数字类型的值。 [] == false; //为True !![] == false; //为False 一、[] == false为True 第一步 转成[] == 0 根据 MDN Web 文档-比较操作符:https://developer.mozilla.org...

    DrizzleX 评论0 收藏0
  • js等号探索(二): a==3&&a==4 true ?

    摘要:前言为是可以实现的。在中,非对象参数将被视为一个冻结的普通对象,因此会返回。注意所以一定要是对象,如果是非对象的其他基本类型如,,被视为冻结对象,不能重写,则不起效果。第四步为这时已经为,运行返回值也为。最后为如上所示为,为,则为其他链接 前言 a==3 && a==4为True是可以实现的。具体代码如下所示: let a=[]; var x=3; a.valueOf=()=>{ ...

    cheng10 评论0 收藏0
  • JavaScript高程三----(基础

    摘要:大小写的不同分别表示不同的变量。本质由一组无序的名值对组成的。字符串中第一个小数点有效,第二个无效,后面的字符串会被忽略。注意双引号开头,必须以双引号结尾,单引号也是如此转义字符表示非打印字符或具有其他用途的字符。 JavaScript高级程序设计(第3版)读书笔记 1.区分大小写: 变量、函数名和操作符都要区分大小写。大小写的不同分别表示不同的变量。 2.标识符: 变量、函数、属性...

    cppowboy 评论0 收藏0
  • 《JavaScript Dom编程艺术》读书笔记(

    摘要:下面这条语句将导致语法错误变量名允许包含字母数字美元符号和下划线但第一个字符不允许是数字。可以把一些布尔值存入一个数组,还可以把一组数值存入一个数组甚至可以把这种数据类型混在一起存入一个数组数组元素还可以是变量这将把数组的第一个元素赋值为。 执行Javascript的方式 第一种方式是将JS代码放到 < head > 标签中的 < script > 标签之间: ...

    lewinlee 评论0 收藏0
  • 《JavaScript Dom编程艺术》读书笔记(

    摘要:下面这条语句将导致语法错误变量名允许包含字母数字美元符号和下划线但第一个字符不允许是数字。可以把一些布尔值存入一个数组,还可以把一组数值存入一个数组甚至可以把这种数据类型混在一起存入一个数组数组元素还可以是变量这将把数组的第一个元素赋值为。 执行Javascript的方式 第一种方式是将JS代码放到 < head > 标签中的 < script > 标签之间: ...

    yeooo 评论0 收藏0

发表评论

0条评论

CollinPeng

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<