gpt4 book ai didi

javascript - 访问正在改变函数内部的变量(jQuery)

转载 作者:行者123 更新时间:2023-11-28 20:18:56 25 4
gpt4 key购买 nike

我正在尝试访问我在函数中设置的变量。我需要在函数之外访问它。我尝试先在函数外部设置变量,然后在函数内部更改它,但这似乎不起作用。这是我的代码:

location_var =""; //i've tried both location_var and var location_var here

$.getJSON('/v/js/round.js', function(data) {

var location_var = "location.pathname.indexOf('/product-p/test-product.htm')"

for(i=0; i<data.records.length-1; i++){
var location_var = location_var + " || location.pathname.indexOf('" + data.records[i].productcode + "')";
}

});

console.log(location_var);

注销时我只得到一个空字符串。当我从 JSON 函数中注销它时,我得到了正确的值。我基本上只是循环遍历 JSON 文件并打印出值。

我也尝试了这里的答案( How to store a global value (not necessarily a global variable) in jQuery? ),但尝试以 $.getJSON.location_var 的形式访问变量,但这也不起作用。

感谢您的帮助!

最佳答案

您的代码有两个问题。

首先 - location_var 的范围是内部函数。 For example :

var foo = 1;
(function(){
var foo = 2;
})();
alert(foo); // alerts '1'

第二个 var 创建一个作用域为函数的新变量,而 alert 语句则查看附加到外部的 foo 变量。范围。

可以通过删除内部var来解决这个问题 - 但这是一个困惑的解决方案,会污染全局范围 - 并且不会起作用因为您的代码中存在另一个错误:

getJSON 调用是异步 - 也就是说,发送远程请求,然后执行其他代码,然后收到响应> 回调函数被执行。换句话说,在您记录该值时,尚未收到响应。

您需要确保从回调中调用任何依赖于 location_var 新值的代码,例如:

$.getJSON('/v/js/round.js', function(data) {
...code...
console.log(location_var);
});

关于javascript - 访问正在改变函数内部的变量(jQuery),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18709039/

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