有没有一个很好的简单方法来检查Javascript中的变量是否有值?

时间:2011-12-01 21:02:49

标签: javascript variables equality

我想查看一下:

if ( typeof myVar != "undefined" && myVar != null )
    ...

换句话说,我想检查一个变量是否有一个定义的值(包括0或一个空字符串),但不是undefined或null,我将其解释为无值。

我每次都必须进行两部分检查,还是有方便的快捷方式?

5 个答案:

答案 0 :(得分:4)

如果您想允许0""作为有效值,并且您希望覆盖变量的情况甚至可能没有被删除,但是不要将null视为有效值,那么您必须像这样专门检查undefinednull

if (typeof myVar !== 'undefined' && myVar !== null) 
   ...

许多值都是假的(它们不满足if (myVar)所以你真的必须有条不紊地决定你要测试哪些。所有这些都是假的:

undefined
false
0
""
null
NaN

如果你想允许某些人,而不是其他人,那么你必须做一个比我上面所示的if (myVar)更具体的测试来隔离你关心的值。

这是关于假值的一个很好的写法:http://www.sitepoint.com/javascript-truthy-falsy/

如果您知道该变量已被声明,并且您只想查看它是否已使用null以外的其他内容进行初始化,则可以使用此:

if (myVar != undefined) 
   ...

仅使用!=代替!==,可以通过类型转换测试未定义和null。虽然,我不推荐这个,因为如果你试图辨别假值,最好不要让JS引擎进行任何类型的转换,这样你就可以准确控制它的作用,而不必记住所有的类型转换平等规则。我坚持这一点更明确:

if (typeof myVar !== 'undefined' && myVar !== null) 
   ...

如果您想知道它是否有任何非假名值,您当然可以这样做(但这不允许0""作为有效值:

if (myVar) 
   ...

答案 1 :(得分:2)

两部分方法。如果您不首先检查typeof,则最终会出现引用错误。

答案 2 :(得分:1)

如果你知道 myVar 上下文,你应该可以这样做:

if (this.myVar != null) {
    ...
}

答案 3 :(得分:0)

如果myvar可能未定义,则在没有typeof检查的情况下调用myvar将引发错误。

如果它被定义为null(对于没有子元素的元素,就像myvar = element.lastChild),如果你只使用typeof,你就会错过它。

答案 4 :(得分:0)

嗯,null是一个定义的值...所以如果你想确保变量不包含null,并且未定义,你必须同时进行这两项检查。