有两个函数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)
答案 0 :(得分:3)
对setTimeout
中的函数使用括号时,会立即执行。
要使用带参数的函数,可以使用任何函数作为超时函数并在其中调用函数。
setTimeout(function() {
hello(1, 'param');
}, 3000);