javascript变量全局和局部范围混淆

时间:2014-02-20 01:42:11

标签: javascript jquery angularjs

$http({
    method: 'GET',
    url: '../URL'
}).
success(function(data, status, headers, config) {               
    items = data;
})

if(items > 0){
// do something
}
在我的案例中没有定义

items。我想知道我将数据分配给没有var的项目,因此它是一个全局变量。我还尝试在全局范围内声明items = "",成功范围不会覆盖并将数据分配到其中。

1 个答案:

答案 0 :(得分:0)

你正在对成功回调之后获得的数据进行操作,不应该这样做。

以下部分

if(items > 0){
// do something
}

你操纵回调后获得的数据应该在成功回调本身内部。使变量成为全局不是实现它的方法,因为代码不是以同步方式执行的。

所以if条件

if(items > 0){
// do something
}
即使在成功回调被触发之前,

也会被执行。因此,items变量将不会在那时设置。

您的代码应该像

success(function(data, status, headers, config) {               
    items = data;
    //do your manipulation here
})