Javascript数组变量作用域

Javascript Array Variable Scope

本文关键字:作用域 变量 数组 Javascript      更新时间:2023-09-26

我在Javascript中遇到数组变量作用域问题。这是我的代码

var features = new Array();
var x = 0;
$.ajax({
  async: true,
  url: domain + "client/applications/getFeatures",
  dataType: 'json',
  success: function(data) {
    if (data.code == 200) {
      $.each(data.data, function(i, val) {
        features[x] = val.features_value;
        x++;
      });
    }
  }
});
alert(features[0]);

弹出的结果总是"未定义"。你有解决方案吗?感谢

问题不在于变量作用域,而在于异步代码。

您的警报在成功回调之前触发,因此尚未设置功能。改为这样做:

$.ajax({
  // ... other AJAX opts
  success: function(data){
    var features = new Array();
    if(data.code == 200){             
      var x = 0;
      $.each(data.data, function(i, val){
        features[x]=val.features_value;                    
        x++;
      });        
    }
    alert(features[0]);
  }
});

如果需要使用alert();(例如,您没有使用它进行调试)然后您需要将它包含在成功函数中,因为它是异步的,需要等到它得到响应后才能显示值!