共计 751 个字符,预计需要花费 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 打包
数据可视化剖析工具如何在国内弯道超车?