此代码是否会使对象变异或以其他任何方式易变? 如果可以,该如何避免呢?原因是我无法让分散操作员工作。
const object = {property: false};
const test = {property: !object.property};
答案 0 :(得分:1)
您的代码没有任何突变。创建test
时,原始object
不会受到影响,因为.property
是一个布尔值(因此是值类型),因此您的新分配仅按值进行。
const test = {property: !object.property}; // assigns a new value to a new reference
另一方面,它做到了:
const object = {property: false};
object.property = !object.property; // mutating the object
const test = object; // copying the reference
不过,您可以这样做:
const object = {property: false};
const test = {...object, property: !object.property}; // creates a copy of object and over-writes the value of the new property