我一直在试图解决这个问题。我正在尝试创建一个 IF 语句。这是示例:
if (vectorLayer.features.length == 0 || typeof vectorLayer =='undefined') {DO STUFF}
但是,如果 vectorLayer 不存在,我会收到错误消息,无法读取语句的第一部分。如果对象不存在或者它存在但不包含任何功能,我会尝试执行此操作。我在这里想念什么?
谢谢!
我一直在试图解决这个问题。我正在尝试创建一个 IF 语句。这是示例:
if (vectorLayer.features.length == 0 || typeof vectorLayer =='undefined') {DO STUFF}
但是,如果 vectorLayer 不存在,我会收到错误消息,无法读取语句的第一部分。如果对象不存在或者它存在但不包含任何功能,我会尝试执行此操作。我在这里想念什么?
谢谢!
这将起作用,首先检查未定义,因此如果未定义 vectorLayer,它将不会执行其余条件。
if (vectorLayer == undefined || vectorLayer.features.length == 0) {DO STUFF}
翻转条件语句。如果左侧为真,则不会计算右侧||
的值,因为如果左侧为真,则右侧的值对整个表达式的真实性没有影响。这称为短路评估。
if (typeof vectorLayer =='undefined' || vectorLayer.features.length == 0) {
// DO STUFF...
}
if (!vectorLayer || !vectorLayer.features.length) {DO STUFF}
你可以做:
if (typeof vectorLayer !== 'undefined' && vectorLayer.features.length == 0) {
// DO STUFF
}
||
好吧,首先评估OR 运算符 ( ) 的左侧。因此,通过切换两个条件的位置,typeof
检查将在 JavaScript 尝试检索对象的某些属性之前捕获未定义的变量。
if (typeof vectorLayer === 'undefined' || vectorLayer.features.length === 0 ) {
// DO STUFF
}
typeof
但是,您可以更轻松地检查变量是否正在udefined
使用,而不是使用运算符===
:
vectorLayer === undefined