const numbers = [...this.state.numbers]; numbers.push(numbers[numbers.length-1] + 1); console.log(numbers === this.state.numbers);
这样子输出的是false
const numbers = this.state.numbers; numbers.push(numbers[numbers.length-1] + 1); console.log(numbers === this.state.numbers);
但是这样输出则是true了
为什么呢?
原因很简单,这种赋值只是直接把this.state.numbers的数组指针直接给了numbers,使得numbers可以直接操作数组里面的数据
const numbers = this.state.numbers; //const numbers = [...this.state.numbers]; numbers.push(numbers[numbers.length-1] + 1); console.log(‘state‘ + this.state.numbers); console.log(‘numbers‘ + numbers);
这样子输出两个数组里的内容是完全一样的,所以就造成了上面的结果了
原文:https://www.cnblogs.com/WildSky/p/11275802.html