如何将函数getNum()
中输入的所有数字放入finalArr
Array
,而不将var finalArr = [];
移到其所在的函数之外?目前,无论我运行脚本多少个周期,它只显示我输入的最后一个数字。
function getNum () {
do {
number = Number(prompt("Enter a number:"));
}
while (number < 0);
return number;
}
function finalArray () {
var finalArr = [];
finalArr.unshift(number);
alert(finalArr);
return;
}
do {
getNum();
finalArray();
var no = prompt("Enter n to stop");
}
while (no != "n");
答案 0 :(得分:0)
你必须在你的getNum()方法中调用你的finalArry()方法,然后从do循环中删除它。
答案 1 :(得分:0)
为什么不使用递归函数而不是while循环?
查看下一个代码:
var array = [];
function getNum () {
var no = prompt("Enter n to stop");
if (no === "n") {
console.log("the final array is");
console.log(array);
} else {
array.push(no);
getNum();
}
}
getNum();
&#13;
编辑:我不明白为什么要在函数内声明Array
,函数内声明的每个变量都只存在于该范围内。但是如果有必要,可以将Array
值传递给函数,声明函数内的Array
获取已经传递的值并返回结果Array
,它有点棘手,但它确实有效:
var array;
function finalArray(array, number) {
var finalArr = array || [];
finalArr.push(number);
return finalArr;
}
function getNum() {
var no = prompt("Enter a number. Enter n to stop");
if (no === "n") {
console.log("the final array is");
console.log(array);
} else {
array = finalArray(array, +no);
getNum();
}
}
getNum();
&#13;