我有两个功能,如下面的,
func1 = function(){
console.log("func1 is called");
}
func2 = function(){
console.log("func2 is called");
setTimeout(func1(),10000)
}
当我拨打电话func2()
时。我得到了输出但不是预期的输出。你可以看到我在setTimeout()
中使用了func2
,并且我希望在执行func1
之前指定一些延迟。
但是没有观察到延迟线同时打印到控制台。我在这里做错了什么,或者我错过了什么?请帮忙..
答案 0 :(得分:8)
引用某个功能时,您需要取消括号。
setTimeout(func1,10000);
答案 1 :(得分:3)
在调用setTimeout的 func1 之后删除括号。
setTimeout 函数需要一个函数 reference 。
您的代码在打印警报后将调用func1 的结果传递给 setTimeout()。
当括号跟随函数的名称时,它们会导致调用该函数。
func1 = function () {
alert('func1 is called');
}
func2 = function(){
console.log("func2 is called");
// Invoke func1 and pass the return value (which is undefined) to setTimeout.
// An alert will be displayed immediately when func1 is invoked.
setTimeout(func1(),10000)
}
func2 = function(){
console.log("func2 is called");
// Pass a reference to func1 to setTimeout to be invoked later.
setTimeout(func1,10000)
}
答案 2 :(得分:2)
您还可以指定匿名函数:
setTimeout(function(){func1();},10000);