Ответ 1
array[index] == 'undefined'
сравнивает значение индекса массива со строкой "undefined".
Вероятно, вы ищете typeof array[index] == 'undefined'
, который сравнивает тип.
Я пытаюсь проверить, является ли переменная Javascript undefined.
Вы увидите, что я не ожидаю, что значение predQuery [preId] будет "undefined", если я сначала не получу предупреждение, говорящее "его невероятное". Но я часто это делаю, поэтому я предполагаю, что мое утверждение
predQuery[preId]=='undefined')
не соответствует элементам 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'
сравнивает значение индекса массива со строкой "undefined".
Вероятно, вы ищете typeof array[index] == 'undefined'
, который сравнивает тип.
Вы проверяете, что индекс массива содержит строку "undefined"
, вы должны либо использовать оператор typeof
:
typeof predQuery[preId] == 'undefined'
Или используйте глобальное свойство undefined
:
predQuery[preId] === undefined
Первый способ безопаснее, поскольку глобальное свойство undefined
доступно для записи и может быть изменено на любое другое значение.
predQuery[preId]=='undefined'
Вы тестируете строку 'undefined'
; вы путаете этот тест с тестом typeof
, который возвращает строку. Вероятно, вы хотите протестировать специальное значение undefined
:
predQuery[preId]===undefined
Обратите внимание на оператор строгого равенства, чтобы избежать общего нежелательного соответствия null==undefined
.
Однако есть два способа получить значение undefined
: либо preId
не является членом predQuery
, либо является членом, но имеет значение, установленное для специального значения undefined
. Часто вы только хотите проверить, присутствует ли это или нет; в этом случае оператор in
более уместен:
!(preId in predQuery)
В Риме есть много способов:
//=>considering predQuery[preId] is undefined:
predQuery[preId] === undefined; //=> true
undefined === predQuery[preId] //=> true
predQuery[preId] || 'it\ unbelievable!' //=> it unbelievable
var isdef = predQuery[preId] ? predQuery[preId] : null //=> isdef = null
ура!
Проверить
if (predQuery[preId] === undefined)
Используйте строгую равную оператору. См. операторы сравнения
попробуйте: typeof(predQuery[preId])=='undefined'
или более широко: typeof(yourArray[yourIndex])=='undefined'
Вы сравниваете "undefined" с undefined, который возвращает false =)
Этот код работает очень хорошо
function isUndefined(array, index) {
return ((String(array[index]) == "undefined") ? "Yes" : "No");
}