Javascript 在这种情况下,为什么不调用setTimeOut?
我使用setTimeout函数每2秒调用一个函数,这是我的代码 这是我的密码Javascript 在这种情况下,为什么不调用setTimeOut?,javascript,Javascript,我使用setTimeout函数每2秒调用一个函数,这是我的代码 这是我的密码 (function () { main(); function main() { setTimeout(fetchdata, 2000); } var fetchdata = function () { alert("Boom!"); }; })(); 但是你能告诉我为什么在这种情况下没有调用setTimeOut吗???当你调用main时,f
(function () {
main();
function main() {
setTimeout(fetchdata, 2000);
}
var fetchdata = function () {
alert("Boom!");
};
})();
但是你能告诉我为什么在这种情况下没有调用setTimeOut吗???当你调用
main
时,fetchdata
没有设置,所以setTimeOut(fetchdata,2000)代码>使用未定义的代码
设置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!");
};
})();
因为fetchData
还不存在。如果将其更改为:
function fetchdata() {
alert("Boom!");
};
它可以工作。因为main
中的fetchdata
是undefined
,如果您想使用,应该在main
之前定义它,如下所示
(函数(){
var fetchdata=函数(){
console.log(“Boom!”);
}
main();
函数main(){
setTimeout(fetchdata,2000);
}
})();
Check main()是一个闭包,setTimeout无权访问尚未定义的函数表达式Yet您认为为什么没有调用setTimeout
?当你调试你的程序时,它访问了那一行吗?那么,在第一个代码段中,只有变量声明被提升到顶部?然而,函数的赋值发生在代码中的同一位置?@sandepnayak是的,只有声明本身被提升到顶部。您还可以在assigmentfetchdata=function(){}之后编写声明/*其他一些代码*/var获取数据代码>