变量在运行时未定义,但在使用调试器时定义
Variable is undefined in runtime, but gets defined when using debugger
我是一个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"}, ...]
发生了什么事?我不明白激活调试器是如何影响变量并使其定义或未定义的。顺便说一句,这只是一个更大脚本的一部分,所以它可能是一个因素。
这是一个异步函数,因此在运行回调之后才会填充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]);
});
相关文章:
- VS2010 javascript调试器希望在VS2010的新实例中启动
- 变量在运行时未定义,但在使用调试器时定义
- 调试器;[错误]194:11:标识符是一个保留字
- 从第一个日期选择器定义第二个日期选择器的开始日期
- 在页面检查器中启用javascript调试器
- console.assert失败时中断chrome调试器
- 仅打开调试器时出现Google chrome扩展错误
- 如何使eval'd调试器可访问的javascript代码
- 使用节点调试器调试ES6 Mocha测试
- Chrome javascript调试器在超时时暂停,可以't调试单击事件
- 通过node.js将Visual Studio调试器附加到电子边缘应用程序
- 调试器;在Chrome控制台中
- 如果调试器关闭,Internet Explorer将出现运行代码问题
- 检测Firebug(或任何其他Web调试器)何时用于调试
- 用于摩卡测试的 CLI 调试器
- 没有浏览器内容的 CUI 调试器,用于 NodeJS
- 使用调试器从内部函数调用外部函数中定义的变量
- 如何让 Chrome 调试器在处理未定义的变量时中断或出错
- 在Chrome调试器中显示为同时具有值和未定义的变量
- Am在chrome调试器中加载时收到错误myFunction未定义