为这个初学者的问题表示歉意,但我在这里发布此方法是作为最后的尝试,以试图了解它的实际工作原理。我的问题是我必须使用repl.it完成一些练习,其中使用console.log打印到控制台将返回未定义的内容。例如,如果我在其中运行以下代码:
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并且不想打印未定义,所以我应该使用return吗?无论如何,在这种情况下最好使用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关键字来返回迭代倒数?这纯粹是出于我的理解,而不是针对任何特定功能。非常感谢和抱歉,我对此感到困惑。
答案 0 :(得分:2)
如何不使用console.log()和任何方法以及使用return关键字来返回迭代倒计时
您可以使用生成器获得迭代返回,但是每次迭代都必须DOMINIO=filenetvers
DATAORA_ATTUALI=$(date +"%Y.%m.%d")
GGZIP=1
GGRM=90
find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.log*[^gz]" -type f -user bea -mtime +${GGZIP} -exec /usr/bin/gzip -9 -f {} "*.gz.$DATAORA_ATTUALI" \;
find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.stdout*[^gz]" -type f -user bea -mtime +${GGZIP} -exec /usr/bin/gzip -9 -f {} "*.gz.$DATAORA_ATTUALI" \;
find /work/pr-${DOMINIO}-0[0-2]/servers -name "*.stderr*[^gz]" -type f -user bea -mtime +${GGZIP} -exec /usr/bin/gzip -9 -f {} "*.gz.$DATAORA_ATTUALI" \;
而不是最后使用yield
:
return
或者您可以创建一个数组并返回它:
function* countdown(num) {
for (let i = num; i > 0; i--) {
yield i;
}
};
console.log(...countdown(10));
答案 1 :(得分:0)
返回数组。
function countdown(num) {
let count = [];
for (let i = num; i > 0; i--) {
count.push(i);
}
return count;
};
console.log(countdown(10));
我在上面使用了console.log()
,因为堆栈代码段不会自动打印函数调用的值。在repl.it
中尝试此操作时,只需输入:
countdown(10)
,它将自动打印返回的数组。