== vs === JavaScript中的相等运算符,有什么区别?

69 阅读1分钟

`==`和`===`,两个不同的运算符来检查对象是否相等。该选择哪一个呢?

在JavaScript中,你可以使用两个不同的操作符来检查对象是否相等。它们是=====

它们基本上做同样的事情,但两者之间有很大的区别。

=== 将检查两个值是否相等。如果它们是对象,那么这些对象必须是相同的类型。如你所知,JavaScript不是类型化的,但是你有一些你必须知道的基本类型。

特别是我们有值类型(布尔值、空值、未定义、字符串和数字)和引用类型(数组、对象、函数)。

如果两个值不属于同一类型,=== 将返回false。

如果它们属于相同的类型,JavaScript将检查是否相等。

对于引用类型,这意味着这些值需要引用相同的对象/数组/函数。不是一个相同的值:是同一个。

== 与此不同的是,它将尝试转换类型来匹配。

这就是为什么你会得到这样的结果

false == '0'  //true
false === '0' //false
null == undefined //true
null === undefined  //false

根据我的经验,在97%的情况下,你会想使用=== ,除非== 提供你想要的东西。它的缺点和边缘情况较少。

!=!== 也是如此,它们执行同样的事情,但被否定了。

总是默认使用!==