你们有没有人能告诉我如何编写这个函数,这样我每次都能得到相同的结果,而不是每次调用('nah man')
时addSomething(myArray)
加起来?
这是一个所谓的无效功能吗?
这是副作用吗?
function addSomething(array) {
array.push('nah man')
}
let myArray = [1, 2]
addSomething(myArray)
//=> [1, 2, 'nah man']
addSomething(myArray)
//=> [1, 2, 'nah man', 'nah man']
答案 0 :(得分:0)
这是因为数组是通过引用而不是值传递的,因此对函数中的数组所做的任何更改都将对主数组进行。 使用切片以您想要的方式工作。
function addSomething(array) {
array=array.slice();
array.push('nah man');
return array;
};
let myArray = [1, 2];
addSomething(myArray);
//=> [1, 2, 'nah man']
addSomething(myArray);
//=> [1, 2, 'nah man']
答案 1 :(得分:0)
查看我的简单示例
function addSomething(array) {
let b = array.slice();
b.push('nah man');
return b;
}
let myArray = [1, 2];
let newArray1 = addSomething(myArray);
let newArray2 = addSomething(newArray1);
console.log(myArray);
console.log(newArray1);
console.log(newArray2);