[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 ==

所以我們平時使用 比較的時候儘量使用===. 因爲對於高級類型和基本類型比較時 == 是有副作用的。

鏈接: 轉載請註明出處喲

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