1 回答

TA貢獻1871條經(jīng)驗 獲得超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是否發(fā)生了改變,該怎么辦?
console.log(array === result); // true...直接對比,沒辦法比較
console.log(array.join() === result.join()); // true ...對比內(nèi)容,沒辦法知道
而如果
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是否發(fā)生了改變,該怎么辦?
console.log(array === result); // 如果發(fā)生改變,那么就是false。不改變,是true
console.log(array.join() === result.join()); // 如果發(fā)生改變,那么就是false。不改變,是true
添加回答
舉報