[node.js 内功心法] javascript ==与=== 的区别

== 与 === 的区别

1. 对于string,number等基础类型,== 和 ===是有区别的

  1. 不同类型间比较,==是“转化成同一类型后的值”看“值”是否相等,===如果类型不同,其结果就是不等
const a = 1
const b = "1"

a == b  #=>  true
a === b #=>  false
  1. 同类型比较,直接进行“值”比较,两者结果一样
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 ==

所以我们平时使用 比较的时候尽量使用===. 因为对于高级类型和基本类型比较时 == 是有副作用的。

链接: 转载请注明出处哟

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章