setTimeout中的函数不起作用

时间:2015-08-25 03:34:46

标签: javascript node.js settimeout

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

nav {
width: 180px;
margin-top: 15px;
}

nav ul {
list-style: none;
margin: 0;
padding: 0;
}

nav ul li {
position: relative;
}

nav a {
color: 101010;
padding: 12px 0px;
display: block;
text-decoration: none;

 transition:background 1s;
-moz-transition:background 1s;
-webkit-transition:background 1s;
-o-transition:background 1s;
font-family:tahoma;
font-size:13px;
text-transform:uppercase;
padding-left:20px;
}

nav a:hover {
background: #ececec;
}

nav ul ul {
display: none;
}

nav ul li:hover ul {
display: block;
}

function hello1(){ console.log('hello1'); } function hello2(){ console.log('hello2'); } setTimeout(hello1, 3000); setTimeout(hello2(), 3000); 中,它会在延迟3秒后打印“hello1”。

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

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

如果我想在延迟3秒之后执行带参数的函数,例如setTimeout(hello2(), 3000);

,该怎么办?

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

1 个答案:

答案 0 :(得分:3)

setTimeout中的函数使用括号时,会立即执行。

要使用带参数的函数,可以使用任何函数作为超时函数并在其中调用函数。

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