JavaScript中"=="与"==="的区别

来源:互联网 发布:淘宝差评师被砍死 编辑:程序博客网 时间:2024/06/06 02:52

"=="是相等运算符,用来判断两个运算数的值是否相等

1,如果两个值类型相同,则比较它们的值,如果值完全相同,它们就相等

2,如果一个值为数字,另一个值为字符串,则将字符串转换为数字后再进行比较

3,如果一个值为true/false,则将其转换为1/0后再进行比较

4,如果一个值为对象类型,另一个值为数字或字符串,则将对象类型转变为其原始类型(调用toString()方法或valueOf()方法)后再进行比较

5,null和undefined相等

var a = 1;var b = '1';var c = true;var d = {x : 1};var e = '[object Object]';console.log(a == b);//trueconsole.log(a == c);//trueconsole.log(d.toString());//[object Object]console.log(d == e);//trueconsole.log(null == undefined);//true

 

"==="是等同运算符,用来判断两个运算数是否完全相同

1,如果两个值的类型不同,则他们不相同

2,如果两个值是数字,且值相等,则他们相同,需要判断数字的值是否为NaN,NaN不与任何值相同,包括其自身

3,如果两个值都是字符串,且在串中同一位置的字符完全相同,则他们相同

4,如果两个值都是布尔值true或布尔值false,则他们相同

5,如果两个值引用的是同一个对象、数组或函数,则他们相同,如果他们引用的不是同一个对象,即使这两个对象拥有相同的属性,他们也不相同

6,如果两个值都是null或undefined,则他们相同

var a = 1;var b = '1';var c = {x : 1};var d = c;var e = {x : 1};console.log(a === b);//falseconsole.log(a === NaN);//falseconsole.log(c === d);//trueconsole.log(c === e);//falseconsole.log(null === null);//trueconsole.log(undefined === undefined);//true