我编写了一个函数,当调用时返回5,但是当我在console.log中调用setInterval()内部的函数时,它会返回我期望的内容。那么为什么召唤它时不起作用呢?
function countdown(seconds){
var tick = 0;
setInterval(function() {
if (seconds > tick) {
seconds--;
console.log(seconds); //counts down as expected.
}
}, 1000);
return seconds;
}
console.log(countdown(5)); //returns undefined.
另外,我知道setTimeout()是首选但是当我换掉setInterval时它根本不起作用。对此问题的任何帮助和清晰度将不胜感激。
答案 0 :(得分:0)
//返回undefined。
因为函数返回时未定义seconds
。查看功能正文。在函数返回之前,不会调用setInterval
。
function countdown(seconds){
var tick = 0;
setInterval(function() {
if (seconds > tick) {
seconds--;
console.log(seconds); //counts down as expected.
}
}, 1000);
// NOTHING HAS ASSIGNED TO seconds TILL THIS POINT
return seconds;
}
你可能想要返回一些稍后会被解析的内容。一个promise。