web-dev-qa-db-ja.com

Javascriptの配列値は未定義です...どうやってテストするのですか

Javascript変数が未定義であるかどうかをテストしようとしています。

「信じられない」という警告を最初に受け取らなければ、predQuery [preId]の値が「未定義」になるとは思わないでしょう。しかし、私はしばしばそうするので、私の声明は推測しています

 predQuery[preId]=='undefined') 

未定義の要素と適切に一致していません。

if((predQuery.length < preId) || (predQuery[preId]=="") || (predQuery[preId]=='undefined')){
   alert("its unbelievable");
   alert(predQuery[preId]);
   queryPreds[variables] = preId;
   queryObjs[variables] = objId;
   predQuery[preId] = variables;
}
else {
    alert(predQuery[preId]);
   var predIndex = predQuery[preId];
   queryPreds[predIndex] = preId;
   queryObjs[predIndex] = objId;
}

必要に応じてコードを追加できます。

30
Ankur

array[index] == 'undefined'は、配列インデックスのvalueを文字列「undefined」と比較します。
おそらくtypeof array[index] == 'undefined'を探しています。これはtypeを比較しています。

65
deceze

配列インデックスに文字列"undefined"が含まれていることを確認しています。typeof演算子を使用する必要があります。

typeof predQuery[preId] == 'undefined'

または、undefinedグローバルプロパティを使用します。

predQuery[preId] === undefined

最初の方法はsaferです。これは、undefinedグローバルプロパティが書き込み可能であり、他の値に変更できるためです。

12
CMS
predQuery[preId]=='undefined'

string'undefined';に対してテストしています。このテストを、文字列を返すtypeofテストと混同しました。おそらく特別な値undefinedに対してテストすることを意味します:

predQuery[preId]===undefined

一般に望ましくない一致null==undefinedを避けるために、厳密な等価演算子に注意してください。

ただし、undefined値を取得する方法は2つあります。preIdpredQueryのメンバーではないか、それisメンバーですが、特別なundefined値に設定された値を持ちます。多くの場合、存在するかどうかだけを確認する必要があります。その場合、in演算子がより適切です。

!(preId in predQuery)
6
bobince

ローマへのより多くの(多くの)方法があります:

//=>considering predQuery[preId] is undefined:
predQuery[preId] === undefined; //=> true
undefined === predQuery[preId] //=> true
predQuery[preId] || 'it\'s unbelievable!' //=> it's unbelievable
var isdef = predQuery[preId] ? predQuery[preId] : null //=> isdef = null

乾杯!

4
KooiInc

確認する

if (predQuery[preId] === undefined)

厳密に等しい演算子を使用します。 比較演算子を参照

2
rahul

試してください:typeof(predQuery[preId])=='undefined'
またはより一般的に:typeof(yourArray[yourIndex])=='undefined'
"undefined"とundefinedを比較しています。false=)を返します

2
Warty

このコードは非常にうまく機能します

function isUndefined(array, index) {
    return ((String(array[index]) == "undefined") ? "Yes" : "No");
}
0