繁体   English   中英

变量作用域和jQuery.getJSON()方法

[英]Variable scoping and the jQuery.getJSON() method

jQuery.getJSON()方法似乎忽略了JavaScript中范围界定的常规规则。

给定这样的代码...

someObject = {
    someMethod: function(){
        var foo;

        $.getJSON('http://www.somewhere.com/some_resource', function(data){
            foo = data.bar;
        });

        alert(foo); // undefined
    }
}

someObject.someMethod();

有没有在getJSON范围之外访问变量值的最佳实践?

您的代码的问题是在JSON请求返回后(在回调函数中)设置了foo。 将警报移到回调中可以解决问题。

范围方面,代码很好。 由于javascript具有闭包,因此回调函数将可以访问周围的上下文(包括foo变量)。 因此,在设置foo时,将设置相同的变量。

这与getJSON()某些怪异getJSON()无关。 这是完全正常的JS行为-毕竟您正在使用回调函数。 完全独立且与定义上下文无关的回调。

最好是您在回调中正确处理所有事情:

someObject = {
  someMethod: function(){
    $.getJSON('http://www.somewhere.com/some_resource', function(data) {
      var foo = data.bar;
      alert(foo);
    });
  }
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM