【发布时间】:2011-05-03 08:58:25
【问题描述】:
我有这个代码:
sys.puts(JSON.stringify(data[0].name));
var userData = {
name: data[0].name,
screenname: data[0].screen_name,
id: data[0].id,
url: data[0].url,
description: data[0].description
}
当我注释掉 userData 对象的创建时,一切正常,这意味着它将该值正确写入控制台。当我把它放回去时,我得到了这个错误:
sys.puts(JSON.stringify(data[0].name));
^
TypeError: Cannot read property 'name' of undefined
任何想法为什么会发生这种情况?这都在同一个函数中。
【问题讨论】:
-
可能是一个显而易见的问题,但您确定这段代码只执行一次吗?就我而言,我有两个同时执行相同代码的回调,一个填充了
data[0],一个没有;所以看起来值神奇地消失了,但实际上是第二个没有数据的调用。 -
这看起来像是 minimal test case 的工作。原样的代码不完整,因此问题不可重现。
-
谢谢大家,我还不太明白发生了什么,但这绝对是一个回调问题。我为不同的事物调用相同的函数并传入不同的回调,或者我是这么认为的。调试我将它分成两个函数并使回调静态并解决了问题,现在我只需要弄清楚我做错了什么。不管怎样,谢谢你把我推向那个方向。
标签: javascript debugging object node.js