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;
}
必要に応じてコードを追加できます。
array[index] == 'undefined'
は、配列インデックスのvalueを文字列「undefined」と比較します。
おそらくtypeof array[index] == 'undefined'
を探しています。これはtypeを比較しています。
配列インデックスに文字列"undefined"
が含まれていることを確認しています。typeof
演算子を使用する必要があります。
typeof predQuery[preId] == 'undefined'
または、undefined
グローバルプロパティを使用します。
predQuery[preId] === undefined
最初の方法はsaferです。これは、undefined
グローバルプロパティが書き込み可能であり、他の値に変更できるためです。
predQuery[preId]=='undefined'
string'undefined'
;に対してテストしています。このテストを、文字列を返すtypeof
テストと混同しました。おそらく特別な値undefined
に対してテストすることを意味します:
predQuery[preId]===undefined
一般に望ましくない一致null==undefined
を避けるために、厳密な等価演算子に注意してください。
ただし、undefined
値を取得する方法は2つあります。preId
がpredQuery
のメンバーではないか、それisメンバーですが、特別なundefined
値に設定された値を持ちます。多くの場合、存在するかどうかだけを確認する必要があります。その場合、in
演算子がより適切です。
!(preId in predQuery)
ローマへのより多くの(多くの)方法があります:
//=>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
乾杯!
試してください:typeof(predQuery[preId])=='undefined'
またはより一般的に:typeof(yourArray[yourIndex])=='undefined'
"undefined"とundefinedを比較しています。false=)を返します
このコードは非常にうまく機能します
function isUndefined(array, index) {
return ((String(array[index]) == "undefined") ? "Yes" : "No");
}