我通过AJAX调用传入了一系列JSON对象。一些数据集包括字段C
,有些则没有。当我包含下面的代码时,它崩溃了。我试过undefined
和null
。两者都崩溃。为什么这个检查会抛出一个错误,即使我事先检查它是否未定义?
if (myJsonObjects[i].C == undefined) {
// …
}
我通过AJAX调用传入了一系列JSON对象。一些数据集包括字段C
,有些则没有。当我包含下面的代码时,它崩溃了。我试过undefined
和null
。两者都崩溃。为什么这个检查会抛出一个错误,即使我事先检查它是否未定义?
if (myJsonObjects[i].C == undefined) {
// …
}
当你说崩溃时,我认为你的意思是TypeError: cannot read property of undefined value
崩溃的原因是因为在该行
if(myJsonObjects[i].C == undefined){
实际上,我们有myJSONObject[i] === undefined
所以,你真的需要检查数组边界或确保您的数组不疏
if(myJsonObjects[i].C == undefined){
是类似
if(myJsonObjects[i] && myJsonObjects[i].C){
,但与我行,你检查是myJsonObjects[i]
和myJsonObjects[i].c
是null或undefined。
需要说明的是,如果myJsonObjects[i].c
持有false, "", 0, NaN
我想你可以稍微右跳之前探探:
if(i in myJsonObjects && myJsonObjects[i] && !("C" in myJsonObjects[i])) { }
但是你原来的代码不应该崩溃,同样不应该抛出错误如果myJsonObjects[i]
被定义并且不为空
如何约
if ('C' in myJsonObjects[i]) { do_your_magic() }
此行不应该是浏览器的原因崩溃,假设'myJsonObjects [i]'是一个对象。我认为你必须发布更多的代码。 –
if(myJsonObjects [i] .C ==“undefined”){ - 检查“undefined”不要忘记从未定义的字符串中创建一个字符串 – philipp
@philipp:只能与'typeof'一起使用。 –