一尘不染

setTimeout中的函数不起作用

node.js

有两个函数hello1()和hello2()。

function hello1(){
    console.log('hello1');
}

function hello2(){
    console.log('hello2');
}

setTimeout(hello1, 3000);
setTimeout(hello2(), 3000);

在中setTimeout(hello1, 3000);,延迟3秒后打印“ hello1”。

但是在中setTimeout(hello2(), 3000);,它会立即打印“ hello2”。

我认为是因为它必须在setTimeout中使用函数名称。

如果我想在延迟3秒后执行带有参数的函数hello(1)怎么办?

因为我想将参数传递给函数,所以我不能只在setTimeout中使用函数名,例如 setTimeout(hello1, 3000);


阅读 544

收藏
2020-07-07

共1个答案

一尘不染

当对函数使用括号时,将setTimeout立即执行。

要将函数与参数一起使用,可以将任意函数用作超时函数,并在其中调用函数。

setTimeout(function() {
    hello(1, 'param');
}, 3000);
2020-07-07