PHP示例:http://codepad.viper-7.com/vo4wGI
<?php
var_dump( isset($something['deep']->property) ); // false
# because well, there is no such thing defined at all
JS类似于:http://jsfiddle.net/psycketom/Lp83m/但不起作用,因为浏览器似乎在尝试解析它的类型之前首先查找该值,并且,如果找不到它,则会得到
console.log( typeof something['deep'].property ); // Uncaught ReferenceError: something is not defined
JavaScript中是否有一个本机函数可以正确解析深度未定义的属性?
答案 0 :(得分:2)
你可以编写一个检查对象本身和属性的函数:
function isset(obj, prop) {
return typeof obj !== 'undefined' ? obj.hasOwnProperty(prop) : false;
}
你会这样称呼它:
myObj = {
"myprop1": "myvalue1"
};
isset(myObj, "myprop1"); // returns true
isset(myObj, "anotherprop"); // returns false
isset(); // returns false
编辑:回答你的问题,没有本地函数没有这样做,你必须自己编写,如果你想要深入检查对象(如果属性存在于对象内部)。你可以递归。但是我没有看到这样做的任何意义,因为你不知道属性存在于哪个“级别”(你可以返回它,但是你没有一个带有布尔返回值的isset函数)
答案 1 :(得分:2)
如果var
是变量你必须检查,这应该有用。
if (typeof(var) != 'undefined' && var != null ) {
//do something
}