1

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

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

但是,如果 vectorLayer 不存在,我会收到错误消息,无法读取语句的第一部分。如果对象不存在或者它存在但不包含任何功能,我会尝试执行此操作。我在这里想念什么?

谢谢!

4

5 回答 5

2

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

if (vectorLayer == undefined || vectorLayer.features.length == 0) {DO STUFF}
于 2012-08-31T18:15:42.043 回答
0

翻转条件语句。如果左侧为真,则不会计算右侧||的值,因为如果左侧为真,则右侧的值对整个表达式的真实性没有影响。这称为短路评估

if (typeof vectorLayer =='undefined' || vectorLayer.features.length == 0) {
    // DO STUFF...
}
于 2012-08-31T18:16:02.197 回答
0
if (!vectorLayer || !vectorLayer.features.length) {DO STUFF}  
于 2012-08-31T18:16:42.197 回答
0

你可以做:

if (typeof vectorLayer !== 'undefined' && vectorLayer.features.length == 0) {
    // DO STUFF
}
于 2012-08-31T18:17:13.140 回答
0

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

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

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

vectorLayer === undefined
于 2012-08-31T18:18:16.040 回答