1

私はこれを理解しようとして投げ出されてきました。IF ステートメントを作成しようとしています。次に例を示します。

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

ただし、vectorLayer が存在しない場合はエラー bc が発生し、ステートメントの最初の部分を読み取ることができません。オブジェクトが存在しない場合、または存在するが機能が含まれていない場合に、このアクションを実行しようとしています。ここで何が欠けていますか?

ありがとう!

4

5 に答える 5

2

これは機能します。 undefined のチェックが最初に行われるため、 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 演算子 ( ) の左側||が最初に評価されます。したがって、2 つの条件の配置を切り替えることにより、typeofJavaScript がオブジェクトのプロパティを取得しようとする前に、未定義の変数がチェックによってキャッチされます。

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

ただし、演​​算子を使用するよりも、変数がを使用してtypeofいるかどうかを簡単に確認できます。udefined===

vectorLayer === undefined
于 2012-08-31T18:18:16.040 に答える