js 深比較和淺比較

神奇大叔發表於2020-11-26
淺比較:
	基本型別會比較值是否相等
	複雜型別會比較引用地址是否相等,如===
	
深比較:
	複雜型別遞迴遍歷裡面的每一個屬性值是否相等

程式碼示例:

淺比較:

{a:1} === {a:1} // false

const m = {a:1};
const n = {a:1};
m === n //false

const m = {a:1};
const n = m;
m === n //true

const m = {a:1};
m === {a:1} //false

changeValue(params) {
  params.a = 2;
  return params;
}
const m = {a:1};
const n = changeValue(m);
m === n //true
m //{a:2}
n //{a:2}
ps: 這裡`changeValue`方法直接修改了傳入的引數`params`,這麼做造成的後果是把  `m`的值也改變了
(因為javascript中,基本型別是傳值呼叫,引用型別是傳引用呼叫)
所以這種做法在`webstrom`中也會有警告,儘量不要這麼做;

相關文章