代码_0:
(没有使用圆括号调用foo
)
function foo(){
console.log('hello world');
}
setTimeout(foo, 2000);
这是如何执行
code_0
的过程:start -> wait for 2 seconds -> 'hello world' displayed -> end
代码_1:
(使用括号调用 foo
)
function foo(){
console.log('hello world');
}
setTimeout(foo(), 2000);
以下是code_1
的执行过程:
start -> 'hello world' displayed immediately -> wait for 2 seconds -> end
为什么在调用函数时加上括号后程序表现会不同?这背后的机制是什么?
抱歉,如果这个问题太简单了。但我在任何初学者的javascript教程中都没有找到解释。
setTimeout(function () { foo('some argument'); }, 2000);
。还有一个内置函数bind
,它可以设置this
和一些前置参数:setTimeout(foo.bind(null, 'some argument'), 2000);
。 - Ry-setTimeout(foo, 2000, myArg1, myArg2, myArg3);
为什么不直接这样做呢? - Jimbo Jonny