gpt4 book ai didi

JavaScript 变量作用域

转载 作者:行者123 更新时间:2023-11-28 14:00:36 24 4
gpt4 key购买 nike

我正在尝试使用 js 和 jquery 制作一个简单的函数,但我无法让它工作。

据我了解,当我声明一个没有 var 的变量时,它会成为全局变量,但我可以将变量从 jquery 回调传递到我的主函数。

   function fetchEvents(start,end){
ret = [];
$j.getJSON("index.php?page=agenda_google_ajax&action=list&start="+start+"&end="+end,function(data){
console.log(data); // works ok
ret = data;
});
console.log(ret); // equals [] :'(
return ret;
}

最佳答案

From what I understand, when I declare a variable with var it becomes global..

事实恰恰相反。当您省略 var 时,该变量将变为全局变量。始终使用 var!

来自Google JavaScript Style Guide :

When you fail to specify var, the variable gets placed in the global context, potentially clobbering existing values. Also, if there's no declaration, it's hard to tell in what scope a variable lives (e.g., it could be in the Document or Window just as easily as in the local scope). So always declare with var.

至于你的问题 console.log(ret);//等于 [] :'(...

$j.getJSON() 不是同步方法调用。该方法异步运行,因此您的代码实际上表示:

ret = [];
console.log(ret);

如果您需要使用 getJSON() 执行后返回的数据,您可以在回调函数中调用一个方法:

$j.getJSON("index.php?page=agenda_google_ajax&action=list&start="+start+"&end="+end,
function(data){ // this is your callback function
console.log(data); // works ok
doSomething(data); // process the returned JSON
}
});

关于JavaScript 变量作用域,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5474271/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com