[英]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.