乐趣区

关于前端:JS语法让人困惑的点-与

在 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 打包

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

退出移动版