我是一个javascript新手并在javascript中尝试此代码(使用jQuery):
$(document).ready(function() {
var nodes=[];
$.getJSON('/get/data', function(data) {
nodes.push(data);
});
//debugger
console.log(nodes);
console.log(nodes[0]);
});
这是我在控制台中看到的:
[ ]
undefined
但是当我取消注释//调试器并运行它时,我得到了这些结果:
[]
[]
[]
[[Object { id=10, label="foo"}, Object { id=9, label="bar"}, 43 more...]]
[Object { id=10, label="foo"}, Object { id=9, label="bar"}, ...]
发生了什么事?我无法理解激活调试器如何影响变量并使其定义或未定义。顺便说一句,这只是一个更大的脚本的一部分,所以它可能是一个因素。
答案 0 :(得分:1)
这是一个异步函数,因此在回调运行之后才会填充nodes
。试试这个:
var nodes=[];
//this "function(data)" is a callback to be executed when you get your data back
$.getJSON('/get/data', function(data) {
nodes.push(data);
console.log(nodes); //<--this now has data!
console.log(nodes[0]);
});