如何每次都返回相同的结果?

时间:2017-10-15 14:11:18

标签: javascript arrays

你们有没有人能告诉我如何编写这个函数,这样我每次都能得到相同的结果,而不是每次调用('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']

2 个答案:

答案 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);