写点什么

JS 语法让人困惑的点 “== 与 ===”

  • 2023-02-23
    陕西
  • 本文字数:669 字

    阅读完需:约 2 分钟

在 JS 中有很多神奇的语法,非常让人困惑,我们就先一一道来,相信你在开发中或多或少都踩过这些坑,或者让人无法理解。 今天我们就来说下【==】和【===】


这题对于很多没有系统学过前端开发的技术人员来说,算个重点,来画起来,我们一起看。



(图片来源于网络)


请看题,以下执行结果是啥?


console.log([]==![]);


是不是很神奇那么为什么会出现这种情况,我们从==与===的特性说起我们先来分析一下上面的等式:1.左边是一个数组,右边是一个表达式,左边数组就是:[]  , 右边是一个数组的取反 ![] ,所以算是一个表达式,后面取反后得到 false,



所以这里可以将等式替换为,相当于 []==false 的比较,


console.log([]==false);


这里,还是有点不符合逻辑,我们再继续拆分。分析:因为这里用的是双等号,左边是数组,右边是值,所以根据双等号的特性,需要将两边都转换为原始类型,用 ToString 来转换,所以这里执行后显示为:



我们继续替换等式


console.log(''==false);


执行后结果为:true,是不是有点抓狂的感觉。现在两边都为原始类型,但是类型还是不一样,左边是字符串,右边是 bool 类型 ,所以这个 == 又要去干件大事了,继续转,将两边都转换为数值类型 。那么继续转:



然后最终执行的表达式就是:


console.log(0==0);


执行结果为:true;


所以表达式中如果需要比较,尽量使用===,因为==在执行中非常诡异,给大家再举个例子:


console.log(true==[1]);


是不是神奇的知识又增加了!


在后续我们会为大家带来更多有趣内容介绍~

拓展阅读

详解商业智能前世今生,嵌入式BI如何百花齐放?


使用WIX进行商业智能OEM打包


数据可视化分析工具如何在国内弯道超车?

发布于: 刚刚阅读数: 4
用户头像

赋能开发者 2020-05-09 加入

西安葡萄城信息技术有限公司是全球领先的软件开发技术和 低代码 平台提供商,以“ 赋能开发者”为使命,致力于通过各类软件开发工具和服务,创新开发模式,提升开发效率,推动软件产业发展,为“数字中国”建设提速

评论

发布
暂无评论
JS语法让人困惑的点 “==与===”_葡萄城技术团队_InfoQ写作社区