我遇到了一个我无法理解的简单行为。我试图检查JSON对象数组的有效性,这里的核心点是用户'选择'它的大小(例如,如果他键入 2 ,将会有 2个对象)。
每个对象都应该有一个名称和一个版本。
我想确定他输入的东西,所以当他点击他提交按钮时,我正在检查这种声明:
if (myarray[0].name !== undefined || myarray.name !== null)
{
// Do some crazy stuff as crazy a return;
}
我没有工作。当我进一步检查(console.log,哇)时,我注意到了这一点:
console.log(myarray); // Prints '[]' because it is empty
console.log(myarray[0]); // Prints 'undefined', seems legit
console.log(myarray[0].name); // Prints ... Well, nothing
为什么第三个console.log
无法打印undefined
?未定义对象的任何属性应该是undefined
,还是我在JavaScript中缺少某些内容?
提前谢谢!
答案 0 :(得分:3)
为什么第三个
console.log
无法打印undefined
?
因为它抛出异常:TypeError: Cannot read property 'name' of undefined
。当您尝试从undefined
或null
读取属性时会发生这种情况。