1 回答

TA贡献1871条经验 获得超8个赞
文档里说了,如果你不做immutable
的话,你就没办法知道有没有改变,因为你改的是对象,举个简单的例子说明:
function blackbox(arr) {
/**
* 在这里可以对arr直接做任何处理,也可以不做任何处理
* 比如:arr[Math.floor(Math.random() * arr.length)] = 2;
*/
return arr;
}
var array = [5,21,54,43,542,213,43,6,2];
var result = blackbox(arr);
// 我想知道新的result是否发生了改变,该怎么办?
console.log(array === result); // true...直接对比,没办法比较
console.log(array.join() === result.join()); // true ...对比内容,没办法知道
而如果
function blackbox(arr) {
if(我要改变) {
let result = arr.slice();
/**
* 在这里可以对result直接做任何处理
*/
return result;
} else return arr;
}
这个样子:
var array = [5,21,54,43,542,213,43,6,2];
var result = blackbox(arr);
// 我想知道新的result是否发生了改变,该怎么办?
console.log(array === result); // 如果发生改变,那么就是false。不改变,是true
console.log(array.join() === result.join()); // 如果发生改变,那么就是false。不改变,是true
添加回答
举报