== 与 === 的区别
1. 对于string,number等基础类型,== 和 ===是有区别的
- 不同类型间比较,==是“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
const a = 1
const b = "1"
a == b #=> true
a === b #=> false
- 同类型比较,直接进行“值”比较,两者结果一样
a = 2
b = 2
a == b #=> true
a === b #=> true
总结:
我们平常写代码比较基础类型数据的时候要注意这个区别,知道用== 和 ===的目的
2. 对于Array,Object等高级类型,== 和 ===是没有区别的
== 和=== 在进行高级类型比较的时候都是对“指针地址”进行比较
[1] === [1] #=> false
[1] == [1] #=> true
// 大家可以思考一下为什么下面的为true, 很简单哟!
const a = { "a": 1 }
const b = a
b === a #=> true
b == a #=> true
3. 基础类型与高级类型比较,== 和 ===是有区别的
不多逼逼, 直接上代码
a = 1
b = [1]
a == b #=> true
a === b #=> false
// 大家看看下面的代码,可以得出什么结论呢?(自己先想想, 下面有答案 注1)
var x = 1;
var obj = { valueOf: function() { x = 2; return 0} }
obj == 0 #=> true
obj === 0 #=> false
x #=> 2
总结:
对于将高级转化为基础类型,进行“值”比较.
对于= 因为类型不同,结果为 false
== 注1 ==
所以我们平时使用 比较的时候尽量使用===. 因为对于高级类型和基本类型比较时 == 是有副作用的。
链接: 转载请注明出处哟