识别未定义的对象名称/值对
这个问题在这里已经有了答案:
您应该使用typeof来检查未定义的密钥。
function parseMe(data){
renderR="";
if(data[0].item4!="collapse"){
renderR=data[0].item4;
//if name/value pair isn't equal to "collapse" render it.
}else if(typeof data[0].item4==="undefined"){
document.getElementById('div1').style.display='none';
//if name/value pair is undefined in object hide the div.
}
}
正如在上面的注释中指出的那样, else if
条件可以改变为typeof(...) === 'undefined'
以使该方法有效,那么else if
。 然而,更标准的解决方案是使用hasOwnProperty方法查询对象的键值,例如
} else if (data[0].hasOwnProperty('item4')) {
在尝试通过点符号或方括号访问该属性之前,应首先检查该检查。 此外,这不会遍历原型链以确定继承属性,但它会检测直接属于该对象的任何属性,这对于原始对象值和解析逻辑(如此)应该足够了。 因此,包含重构代码的最终解决方案可以使用hasOwnProperty
方法,也可以使用in
运算符和switch语句,例如
for (var key in data[0]) {
var value = data[0][key];
switch (key) {
case "item1":
dosomething(value);
break;
case "item2":
dosomethingelse(value);
break;
// etc...
}
}
链接地址: http://www.djcxy.com/p/22645.html