我在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]);

弹出窗口的结果总是"取消定义"。你有解决方案吗?谢谢
答案 0 :(得分:3)
你的问题不在于变量范围,而在于异步代码。
在成功回调之前触发了警报,因此尚未设置功能。做这样的事情:
$.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]);
}
});
答案 1 :(得分:1)
如果你需要使用alert(); (例如,你没有使用它进行调试)那么你需要将它包含在成功函数中,因为它是异步的,需要等到它在显示值之前得到响应! / p>