2013-08-24 70 views
0

我相信我已经找到了,我需要检查这两个不确定的和无效的JavaScript对象的情况如下:检查JavaScript对象空subtelty

if (x !== undefined && x != null && x.length > 0) {...} 

然而,在最近的JetBrains的工具升级,它告诉我,这是足够

if (x != undefined && x.length > 0) {...} 

我的问题是,我只是想确保一个字符串“x”具有非零的长度,而不是未定义或为空(用最少的测试) 。

想法?

+1

如果你想要一个长度大于0的字符串,请检查'typeof x ==='string'&& x.length> 0'。 – Matt

+0

其实,我不确定你在问什么, – gdoron

+0

你相信什么? –

回答

5

在JavaScript

undefined == null // true 
undefined === null // false 

==所以检查undefined使==支票null冗余。

2

尝试

if (x && x.length) 

undefinednull0都是falsy值。

编辑: 你似乎知道x应该是一个string,你也可以只使用if (x)为空字符串也falsy。

0

试试这个

if (!x) { 
    // is emtpy 
} 
+0

我几乎总是在寻找我想有一个非常好的“始终使用”模式是它是一个非空,非空字符串 –

0

对证nullundefined和“空字符串”,你可以写

if(!x) { 
    // will be false for undefined, null and length=0 
} 

但是你需要确定你的变量是被定义的!否则这将导致错误。

如果您正在检查object中的值(例如window对象),则始终可以使用该值。例如。对于localStorage支持检查:

var supports = { 
    localStorage: !!window.localStorage 
} 
2

您可以使用_.isNullUnderscore一个JavaScript库提供了有用的函数式编程佣工全乱了。

_。isNull(object)

如果object的值为null,则返回true。

_.isNull(null); 
=> true 
_.isNull(undefined); 
=> false 
2

这是我使用的,它是最简洁的。它包括: undefined,null,NaN,0,“”(空字符串)或false。因此,我们可以说“对象”是真理。

if(object){ 
    doSomething(); 
}