在JavaScript中测试null和undefined的更短方法?

时间:2015-10-10 18:17:41

标签: javascript

我正在读一本书,上面写着虽然可以测试一个变量是否被定义并且具有以下值:

if(myVar != null && myVar != undefined) {
  ...
}

这被认为是“糟糕的风格”,并且因为nullundefined都是假值,我们可以通过使用更简洁{{1}来更轻松地检查变量是否具有值构造

if

但这让我感到困惑,因为虽然if(myVar) { ... } null都是假值,但它们不是唯一的假值。换句话说,在我看来,前undefined语句说,“只要变量不是null或未定义就运行代码,而后者if语句说,”运行代码只要变量不是假的。“假设if,那么前一个myVar == 0语句就会运行,但后一个if语句不会。因此这两个{{1} }语句不等同。我错了吗?

编辑:如果你想看到他们的确切措辞,这里是一个屏幕抓取: testing for null and undefined

2 个答案:

答案 0 :(得分:4)

要检查变量是ini_set('pcre.backtrack_limit',1000000); ini_set('pcre.recursion_limit',1000000); 还是null,请使用非单一运算符检查undefined

null

但是,最好使用三等于更明确。

if (myVar != null) {

}

比较

if (!(myVar === null || typeof myVar === 'undefined')) {

}

DEMO:http://jsfiddle.net/xk9L3yuz/3/

答案 1 :(得分:0)

没有简短的方法。首先需要在null之前检​​查undefined,因为

!myVar

假设myVar先前已定义,并将抛出

Uncaught ReferenceError: myVar is not defined

如果您从未定义过该变量。

只有在您从某些外部来源提取数据并且不确定该变量是否存在时,才需要进行此项检查。如果您已经在代码中的某个位置定义了它并且例如等待用户输入来设置它,则可以使用

的快捷方式
!myVar

只是因为你知道它已经定义了,因为你之前在代码中已经这样做了。