我有这段代码:
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
为什么会发生这种情况?这都属于同一个功能。
答案 0 :(得分:0)
在访问其属性之前,使用guard operator验证对象:
JSON.stringify(!!window["data"] && data.hasOwnProperty("length") && data[0].hasOwnProperty("name") && data[0].name)
作为替代方法,使用try / catch块:
try
{
JSON.stringify(data[0].name)
}
catch(e)
{
throw("Error")
}
<强>参考强>