如何检查Javascript中是否存在字符串/数组/对象?

时间:2013-05-24 20:19:29

标签: javascript

我有一个对php函数的ajax调用,它可以返回一个字符串,一个数组,一个对象,或者什么也没有。 (是的,我知道将它标准化是理想的,因此只有一种可能的返回类型,但它是由我们的主要开发者选择的第三方库,我无法改变它。)有一种简单的方法我可以测试看它是否存在?我试过这个:

function doSomething(data)  //data is what's returned by a previous ajax call
     if(data.unavailableItems) {
        // do something
     }
}

但即使进入函数的数据数组中不存在do something元素,它也会触及unavailableItems。我知道我必须遗漏一些非常明显的东西,但我不能为我的生活找到它。

以下是进入该功能的数据示例;你可以看到没有名为unavailableItems的元素:

enter image description here

2 个答案:

答案 0 :(得分:2)

if(data != void(0) && data.unavailableItems != void(0)){
  //exists
}

诺曼在评论中指出......你应该结帐what void 0 means

答案 1 :(得分:1)

用于检查对象是否包含属性的好工具是obj.hasOwnProperty(prop)

if(data.hasOwnProperty("unavailableItems")){

}

另请注意,John Resig为obj.hasOwnProperty

提供了垫片
function hasOwnProperty(obj, prop) {
 var proto = obj.__proto__ || obj.constructor.prototype;
 return (prop in obj) &&
    (!(prop in proto) || proto[prop] !== obj[prop]);
}

if ( Object.prototype.hasOwnProperty ) {
 var hasOwnProperty = function(obj, prop) {
    return obj.hasOwnProperty(prop);
 }
}