我一直在试图解决这个问题。我正在尝试创建一个IF语句。这是一个例子:
if (vectorLayer.features.length == 0 || typeof vectorLayer =='undefined') {DO STUFF}
但是,如果vectorLayer不存在,我会收到错误bc,无法读取语句的第一部分。如果对象不存在或者如果它存在但不包含任何功能,我试图让这个动作发生。我在这里缺少什么?
谢谢!
答案 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