为什么在这种情况下没有调用setTimeOut
Why the setTimeOut is not being called in this case?
我使用setTimeout函数每2秒调用一个函数,这是我的代码
这是我的代码
(function () {
main();
function main() {
setTimeout(fetchdata, 2000);
}
var fetchdata = function () {
alert("Boom!");
};
})();
https://jsfiddle.net/bh44ugv6/1/但是你能告诉我为什么setTimeOut在这种情况下没有被调用吗?
调用main
时,fetchdata
未设置,因此setTimeout(fetchdata, 2000);
使用undefined
设置fetchdata
:
main()
(function () {
function main() {
setTimeout(fetchdata, 2000);
}
var fetchdata = function () {
alert("Boom!");
};
main();
})();
或者使用命名函数:
(function () {
main();
function main() {
setTimeout(fetchdata, 2000);
}
function fetchdata() {
alert("Boom!");
};
})();
因为main
中的fetchdata
是undefined
,如果你想使用函数表达式,你应该在main
之前定义它,像这样
(function () {
var fetchdata = function () {
console.log("Boom!");
}
main();
function main() {
setTimeout(fetchdata, 2000);
}
})();
也可以将fetchdata
定义为函数声明
(function () {
main();
function main() {
setTimeout(fetchdata, 2000);
}
function fetchdata() {
console.log("Boom!");
};
})();
因为fetchData
还不存在。如果你把它改成:
function fetchdata() {
alert("Boom!");
};
。
相关文章:
- 调用setTimeout内部的函数时发生引用错误
- 在Dojo类中递归调用setTimeout时是否存在内存泄漏
- 而循环调用setTimeout不起作用
- 在循环中调用 setTimeout 未按预期工作
- 未从单元测试调用 setTimeout
- 使用for循环调用setTimeout
- 我如何在页面加载的第一件事就是调用setTimeout,然后等待五秒钟
- 我如何优化这个调用setTimeout()的递归函数
- 调用setTimeout来减少值
- 在for循环中调用setTimeout()的clearartimeout()
- Dojo: async调用setTimeout + Deferred——>不工作
- 是否使用负延迟调用setTimeout
- 为什么在这种情况下没有调用setTimeOut
- 调用setTimeout是否清除调用栈?
- Backbone model.fetch()回调(调用setTimeout)中的作用域问题
- 递归调用setTimeout函数并传递一个匿名函数
- 从变量调用setTimeout函数
- 调用setTimeOut's函数带有对象,出现意外结果
- 延迟1调用setTimeout的目的是什么
- 在循环中调用 setTimeout 函数