JavaScript中==运算符

今天在翻阅Node.js中assert模块的时刻,看到这么一行代码:

assert.equal({a: {b: 1}}, {a: {b: 1}});
//AssertionError: { a: { b: 1 } } == { a: { b: 1 } }

在第一眼扫过今后,疑心官方文档有毛病的时刻,我就晓得我应该去补补我的JavaScript基础知识了。

==运算符为肯定两个运算数是不是相称,会对摆布双方运算数举行范例转换。
实行范例转换的划定规矩以下:
1.假如一个运算数是Boolean值,在搜检相称性之前,把它转化成数字值。false转化成0,true转换为1。
2.假如一个运算数是字符串,另一个是数字,在搜检相称性之前,要尝试把字符串转换成数字。
3.假如一个运算数是对象,另一个是字符串,在搜检相称性之前,要尝试把对象转换成字符串。
4.假如一个运算数是对象,另一个是数字,在搜检相称性之前,要尝试把对象转换成数字。

在比较时,该运算符还恪守以下划定规矩:
1.值null和undefined相称。
2.在搜检相称性时,不能把null和undefined转换成其他值。
3.假如某个运算数是NaN,等号将返回false,非等号将返回true。
4.假如两个运算都是对象,那末比较它们的援用值。假如两个运算数指向同一个对象,那末标记返回true,不然两个运算数不等。

example:
var a = {a:’zuckjet’};
var b = {a:’zuckjet’};
var c = a;
console.log(a==b); //false,a和b均是援用范例,指向两个差别地点
console.log({a:’zuckjet’}=={a:’zuckjet’}); //false
console.log(a==c); //true
console.log(a==b); //false

    原文作者:唐僧洗头爱飘柔
    原文地址: https://segmentfault.com/a/1190000008924503
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞