我正在读一本书,上面写着虽然可以测试一个变量是否被定义并且具有以下值:
if(myVar != null && myVar != undefined) {
...
}
这被认为是“糟糕的风格”,并且因为null
和undefined
都是假值,我们可以通过使用更简洁{{1}来更轻松地检查变量是否具有值构造
if
但这让我感到困惑,因为虽然if(myVar) {
...
}
和null
都是假值,但它们不是唯一的假值。换句话说,在我看来,前undefined
语句说,“只要变量不是null或未定义就运行代码,而后者if
语句说,”运行代码只要变量不是假的。“假设if
,那么前一个myVar == 0
语句就会运行,但后一个if
语句不会。因此这两个{{1} }语句不等同。我错了吗?
答案 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')) {
}
答案 1 :(得分:0)
没有简短的方法。首先需要在null之前检查undefined,因为
!myVar
假设myVar先前已定义,并将抛出
Uncaught ReferenceError: myVar is not defined
如果您从未定义过该变量。
只有在您从某些外部来源提取数据并且不确定该变量是否存在时,才需要进行此项检查。如果您已经在代码中的某个位置定义了它并且例如等待用户输入来设置它,则可以使用
的快捷方式!myVar
只是因为你知道它已经定义了,因为你之前在代码中已经这样做了。