我第一次在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
。有谁知道为什么会这样?提前谢谢!
答案 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>