稍等一小会儿就好啦~

JavaScript中 == 与 === 的区别

JavaScript中提供了两种方式用于比较值是否相等,其中:

==  :  用于宽松比较。
=== : 用于严格比较。

下面用几个例子来看看二者的异同之处,你也可以在浏览器环境下,点击 Ctrl+Shift+J 来打开控制台测试结果。

var foo = 42;
var js = 42;
var bar = "42";

console.log(foo == bar);   //true
console.log(foo === bar);  //false

console.log(foo == js);    //true
console.log(foo === js);   //true

可见 == 并不会对类型有严格的审查,而 === 则检查出了 String 和 Number 类型的不同。

同样,!= 和 !== 也具有着类似的特性:
var foo = 42;
var bar = "42";
console.log(foo != bar);   //false
console.log(foo !== bar);  //true


在日常开发中,我们应该尽可能使用 === 来比较值,以避免不必要的bug。 那么,=== 是否是万能的呢?来看下面的测试案例:
console.log(+0 == -0);   //true
console.log(NaN === NaN);  //false

+0、-0、NaN这样的边界值在使用 === 比较时,出现了我们不希望看到的结果。
为此,在ES6中,提出了 Object.is() 方法来解决这一问题:

console.log(Object.is(2, 2));    // true
console.log(Object.is(2, "2"));  // false

console.log(Object.is(+0, -0));  // false
console.log(Object.is(NaN, NaN));// true


== 和===异同

posted @ 2021-10-09 14:33  LuJT  阅读(267)  评论(0)    收藏  举报