setInterval函数返回undefined

时间:2016-08-30 09:25:22

标签: javascript jquery

我第一次在JavaScript中学习setInterval,并试图在5秒后显示一个值。我的代码如下:

<button onclick="myTest()">Try it</button>

<script>
function myTest() {
    const ret = myFunction();
    alert(ret);
}

function myFunction() {
    let i = 0;
    const interval = setInterval(function(){ 
        i += 1;
        if (i === 5) {
            clearInterval(interval);
            return i;
        }
    }, 1000);
}
</script>

我想要提醒5,而我得到undefined。有谁知道为什么会这样?提前谢谢!

3 个答案:

答案 0 :(得分:2)

您无法在setInterval来电中的匿名函数中返回任何内容。您需要从该函数中写入console。试试这个:

function myTest() {
  // this function is now redundant - you could call myFunction() directly
  myFunction();
}

function myFunction() {
  let i = 0;
  const interval = setInterval(function() {
    i += 1;
    if (i === 5) {
      clearInterval(interval);
      console.log(i); // this will appear after 5 seconds...
    }
  }, 1000);
}

myTest();

答案 1 :(得分:1)

return i;

我将返回Window(我猜),而不是myFunction。

myFunction默认返回undefined,因为你没有写回程。

function myTest() {
    myFunction(function(val){
        alert(val);
    });
}

function myFunction(callback) {
    let i = 0;
    const interval = setInterval(function(){ 
        i += 1;
        if (i === 5) {
            clearInterval(interval);
            if(callback){
                callback(i);
            }
        }
    }, 1000);
}

你可以在回调函数中获得你的价值。

答案 2 :(得分:1)

警报(ret)将在5秒结束之前发生,因此我的函数将返回undefined。试试这种方式。

<button onclick="myTest()">Try it</button>
<script>
function myTest() {
myFunction();
}
function myFunction() {
var i = 0;
var interval = setInterval(function(){  
   i++;
    if (i === 5) {
    alert(i);
      clearInterval(interval);
    }
  }, 1000);

}
 </script>