我是JS的初学者,遇到了一个代码,如果我在此处输入不同的参数,该代码将提供相同的输出:
function addToArr(element) {
var arr = [];
arr.push(element);
return element + " added to " + arr;
}
var firstPass = addToArr("a");
var secondPass = addToArr("b");
console.log(firstPass); // a added to a
console.log(secondPass); // a added to a
从上面的代码中可以看到,如果我先通过a
然后又通过b
,但是得到的输出是一样的吗?
答案 0 :(得分:0)
在进入示例之前,我将给您一个一般性的答案:对于不同的输入,一个函数可以具有相同的返回值。例如,3为奇数,5也为奇数。如果您具有isOdd函数,则它对于3和5均应为true。
现在,您的示例:
function addToArr(element) {
var arr = [];
arr.push(element);
return element + " added to " + arr;
}
var firstPass = addToArr("a");
var secondPass = addToArr("b");
console.log(firstPass); // a added to a
console.log(secondPass); // a added to a
不会给a加上a,但是至少在我第二遍时才将b添加到b。但是,您需要有一个单独的数组,如下所示:
function addToArr(arr, element) {
var str = `[${arr.toString()}]`;
arr.push(element);
return element + " added to " + str;
}
var arr = [];
var firstPass = addToArr(arr, "a");
var secondPass = addToArr(arr, "b");
console.log(firstPass); // a added to a
console.log(secondPass); // a added to a
因为在函数内部声明一个空数组并向其中添加一个值没有意义。
答案 1 :(得分:-1)
如果您希望数组的添加内容“粘住”,那么一个选择是更改函数的签名以接受输入数组。然后,让该函数向该外部数组添加元素。
function addToArr(element, arr) {
arr.push(element);
return element + " added to " + arr;
}
var arr = [];
var firstPass = addToArr("a", arr);
var secondPass = addToArr("b", arr);
console.log(firstPass); // a added to a
console.log(secondPass); // b added to a,b
console.log(arr);