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);
這樣子輸出兩個數組里的內容是完全一樣的,所以就造成了上面的結果了