浅比较会检查是否相等。比较标量值(数字,字符串)时,它会比较它们的值。当比较对象时,它不比较它们的属性-仅比较它们的引用(例如“它们是否指向同一对象?”)。
让我们考虑
user物体的形状
user = { name: "John", surname: "Doe"}范例1:
const user = this.state.user;user.name = "Jane";console.log(user === this.state.user); // true
注意,您更改了用户名。即使有了这种变化,对象也是相等的。他们引用是完全相同的。
范例2:
const user = clone(this.state.user);console.log(user === this.state.user); // false
现在,无需更改对象属性即可将它们完全不同。通过克隆原始对象,可以创建具有不同参考的新副本。
克隆功能可能如下所示(ES6语法)
const clone = obj => Object.assign({}, ...obj);浅比较是检测更改的有效方法。期望您不要变异数据。



