javascript - 变量在运行时未定义,但在使用调试器时定义

标签 javascript arrays json object undefined

我是一个 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

但是当我取消注释//debugger 并运行它时,我得到以下结果:

  []
  []
  []
 [[Object { id=10,  label="foo"}, Object { id=9,  label="bar"}, 43 more...]]
 [Object { id=10,  label="foo"}, Object { id=9,  label="bar"}, ...]

这是怎么回事?我无法理解激活调试器如何影响变量并使其定义或未定义。顺便说一句,这只是一个较大脚本的一部分,因此它可能是一个因素。

最佳答案

这是一个异步函数,因此在回调运行之前,节点不会被填充。试试这个:

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]);
});

关于javascript - 变量在运行时未定义,但在使用调试器时定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29403535/

相关文章:

java - 如何聚合 mongodB 集合中所有文档的映射键?

php - 两个数组之间的差异(抑制和添加的行)

javascript - 带有映射的javascript中以特定格式显示的数组

javascript - 如何格式化嵌套 json 数组取决于 api 请求 json 的条件

java - 致命异常 : AsyncTask #1 when trying to access remote database from mobile android app

mysql - 从多维数组获取值 | JSON

javascript - 将 JavaScript 数组存储在数据库中并在需要时取回数组

javascript - 单击按钮时如何创建 IMG?

javascript - 用于将元素从一个父元素移动到另一个父元素的 React 动画

javascript - 为什么返回 Object.keys() 一个对象(看起来像数组)?