使用已定义/未定义的变量创建JS“If”语句

时间:2012-08-31 18:13:48

标签: javascript if-statement

我一直在试图解决这个问题。我正在尝试创建一个IF语句。这是一个例子:

if (vectorLayer.features.length == 0 || typeof vectorLayer =='undefined') {DO STUFF}

但是,如果vectorLayer不存在,我会收到错误bc,无法读取语句的第一部分。如果对象不存在或者如果它存在但不包含任何功能,我试图让这个动作发生。我在这里缺少什么?

谢谢!

5 个答案:

答案 0 :(得分:2)

这将起作用,对undefined的检查首先进行,因此如果未定义vectorLayer,它将不会执行其余的条件。

if (vectorLayer == undefined || vectorLayer.features.length == 0) {DO STUFF}

答案 1 :(得分:0)

翻转条件语句。如果左侧为真,则||的右侧将不会被评估,因为如果左侧为真,右侧的值对整个表达式的真实性没有影响。这称为short-circuit evaluation

if (typeof vectorLayer =='undefined' || vectorLayer.features.length == 0) {
    // DO STUFF...
}

答案 2 :(得分:0)

if (!vectorLayer || !vectorLayer.features.length) {DO STUFF}  

答案 3 :(得分:0)

你可以这样做:

if (typeof vectorLayer !== 'undefined' && vectorLayer.features.length == 0) {
    // DO STUFF
}

答案 4 :(得分:0)

好吧,首先评估OR运算符(||)的左侧。因此,通过切换两个条件的位置,typeof检查将在JavaScript尝试检索对象的某些属性之前捕获未定义的变量。

if (typeof vectorLayer === 'undefined' || vectorLayer.features.length === 0 ) {
    // DO STUFF
}

但是,您可以使用typeof更轻松地检查变量是udefined,而不是使用===运算符:

vectorLayer === undefined