js 深比較和淺比較
淺比較:
基本型別會比較值是否相等
複雜型別會比較引用地址是否相等,如===
深比較:
複雜型別遞迴遍歷裡面的每一個屬性值是否相等
程式碼示例:
淺比較:
{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`中也會有警告,儘量不要這麼做;
相關文章
- js物件如何深比較?JS物件
- Oracle date 型別比較和String比較Oracle型別
- js比較日期 - JavaScriptJSJavaScript
- JS變數比較陷阱JS變數
- Go和Python比較的話,哪個比較好?GoPython
- react-redux的淺比較ReactRedux
- etcd和redis比較Redis
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- not in 和 not exists 比較和用法
- redux connect的淺比較說明Redux
- 比較器-Comparable和Comparator
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- PyTorch和TensorFlow比較 - thegradientPyTorch
- ==和equals方法的比較
- 比較集合
- Integer比較
- 效能比較
- 字串比較字串
- Vue.js構建工具比較Vue.js
- js物件陣列Date的比較JS物件陣列
- 直播平臺開發,純時間比較(時分),不含日期,js前端比較JS前端
- 淺談前端MOCK資料工具比較前端Mock
- Go 與 C++ 的對比和比較GoC++
- 比較檔案是否相同,(比較MD5值)
- [C++] 自定義C++比較器比較大小C++
- Transformer和MoE架構比較ORM架構
- Java 中 Comparable 和 Comparator 比較Java
- TreeMap和HashMap的元素比較HashMap
- 比較Windows和Linux SQL容器WindowsLinuxSQL
- React.js和Vue.js的語法並列比較ReactVue.js
- js精確比較浮點數大小JS
- 列舉比較
- 常用 NoSQL 比較SQL
- Jsonunit 比較jsondiffJSON
- Integer的比較