在开发过程中我发现一个好玩的事情,先看代码:
const test1 = ['1', '2', '3'];;
const test2 = [...test1];
test2[0] = '999';
console.log(test1[0]) // '1'
让 test1 等于 test2,然后当在某个时刻修改 test2 的时候,不会修改到 test1。
const test1 = [{value: '1'}, {value: '2'}, {value: '3'}];;
const test2 = [...test1];
test2[0].value = '999';
console.log(test1[0].value) // '999'
当test2是一个对象组成的数组的时候,用扩展运算符[...test2]赋值,会拷贝地址,当某个时候修改test2的时候,test1也变了。
所以一定要特别小心别轻易用扩展运算符!!!!
解决这个问题,用lodash的cloneDeep(test2)