对于这个初学者的问题道歉,但我在这里发布这个作为最后的手段,试图了解它实际上是如何工作的。我遇到的问题是我必须使用repl.it完成一些练习,其中使用console.log打印到控制台返回undefined。例如,如果我在其中运行此代码:
function countdown(num) {
for (let i = num; i > 0; i--) {
console.log(i)
}
};
countdown(10);
它打印:
10
9
8
7
6
5
4
3
2
1
=> undefined
现在,当我在VS Code中运行此代码时,它生成相同的东西,但底部没有未定义。因为我必须使用repl.it并且不想打印undefined,我应该使用return?无论如何,返回最好在这种情况下使用。所以我改变了我的代码,但当然在for循环代码块中使用return会阻止循环运行,这是不行的。那么我这样做:
function countdown(num){
let count = 0;
for (let i = num; i > 0; i--){
count = i;
}
return count;
};
console.log(countdown(10));
但后来我得到1回归。所以我的问题是,如何在不使用console.log()和任何方法以及使用return关键字的情况下返回迭代倒计时?这纯粹是出于我的理解,而不是任何特定的功能。非常感谢和抱歉我的困惑。
如何在不使用console.log()和任何方法以及使用return关键字的情况下返回迭代倒计时
你可以使用生成器获得迭代返回,但是你必须在每次迭代时使用yield
值,而不是在最后使用return
:
function* countdown(num) {
for (let i = num; i > 0; i--) {
yield i;
}
};
console.log(...countdown(10));
或者您可以创建一个数组并将其返回:
function countdown(num) {
const arr = [];
for (let i = num; i > 0; i--) {
arr.push(i);
}
return arr;
};
console.log(countdown(10));
返回一个数组。
function countdown(num) {
let count = [];
for (let i = num; i > 0; i--) {
count.push(i);
}
return count;
};
console.log(countdown(10));
我上面使用了console.log()
,因为Stack Snippets不会自动打印函数调用的值。当您在repl.it
中尝试此操作时,只需写:
countdown(10)
它会自动打印返回的数组。