我似乎经常使用这个测试
if( object && object !== "null" && object !== "undefined" ){
doSomething();
}
on objects
我从服务电话或阅读Cookie回来(因为不同的浏览器会返回不同的值null
,undefined
,"null"
或{{1 }})。
是否有更简单/更有效的方法进行此检查?
答案 0 :(得分:30)
我认为你不能做到这一点更简单,但你当然可以将这个逻辑重构为一个函数:
function isRealValue(obj)
{
return obj && obj !== 'null' && obj !== 'undefined';
}
然后,至少你的代码变为:
if (isRealValue(yourObject))
{
doSomething();
}
答案 1 :(得分:8)
如果你有jQuery,你可以使用$.isEmptyObject()
。
$.isEmptyObject(null)
$.isEmptyObject(undefined)
var obj = {}
$.isEmptyObject(obj)
所有这些调用都将返回true。希望它有所帮助
答案 2 :(得分:3)
如果object
真实,我们已经知道它不是null
或undefined
(假设字符串值是错误的)。我认为不需要null
而不是undefined
测试。
如果是这样,与null
或undefined
的简单比较就是比较!= null
。
if( object != null ){
doSomething();
}
仅当doSomething
既不是object
也不是null
时,undefined
函数才会运行。
答案 3 :(得分:3)
if(!!object){
doSomething();
}
答案 4 :(得分:2)
也许就像这样
if (typeof object !== "undefined" || object !== null)
// do something
答案 5 :(得分:1)
也许是这样的:
/\{|\}|;/
答案 6 :(得分:0)
我认为您可以通过以下方式简化您的逻辑:
if (object != null && typeof(object) == "object") {
doSomething();
}
主要问题是,如果您只检查typeof(object) == "object"
,则true
的类型为{{,如果object
是null
,它将返回null
1}}。但是,如果您首先检查"object"
,则可以确定自己所拥有的东西既不是object != null
也不是undefined
。
答案 7 :(得分:0)
这应该没有任何问题。
if(object){ // checks for null and undefined
doSomething();
}
答案 8 :(得分:0)
检查对象是否为空的最佳方法是使用以下实用工具。
创建功能
function isEmpty(obj) {
for(var key in obj) {
if(obj.hasOwnProperty(key))
return false;
}
return true;
}
通过以下方式使用上述功能:-
因此,如果您有一个空的对象,则可以使用上述功能检查它是否为空。
var myObj = {}; // Empty Object
if(isEmpty(myObj)) {
// Object is empty (Would return true in this example)
} else {
// Object is NOT empty
}