Подтвердить что ты не робот

Значение массива Javascript 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;
}

При необходимости я могу добавить дополнительный код.

4b9b3361

Ответ 1

array[index] == 'undefined' сравнивает значение индекса массива со строкой "undefined".
Вероятно, вы ищете typeof array[index] == 'undefined', который сравнивает тип.

Ответ 2

Вы проверяете, что индекс массива содержит строку "undefined", вы должны либо использовать оператор typeof:

typeof predQuery[preId] == 'undefined'

Или используйте глобальное свойство undefined:

predQuery[preId] === undefined

Первый способ безопаснее, поскольку глобальное свойство undefined доступно для записи и может быть изменено на любое другое значение.

Ответ 3

predQuery[preId]=='undefined'

Вы тестируете строку 'undefined'; вы путаете этот тест с тестом typeof, который возвращает строку. Вероятно, вы хотите протестировать специальное значение undefined:

predQuery[preId]===undefined

Обратите внимание на оператор строгого равенства, чтобы избежать общего нежелательного соответствия null==undefined.

Однако есть два способа получить значение undefined: либо preId не является членом predQuery, либо является членом, но имеет значение, установленное для специального значения undefined. Часто вы только хотите проверить, присутствует ли это или нет; в этом случае оператор in более уместен:

!(preId in predQuery)

Ответ 4

В Риме есть много способов:

//=>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

ура!

Ответ 6

попробуйте: typeof(predQuery[preId])=='undefined'
или более широко: typeof(yourArray[yourIndex])=='undefined'
Вы сравниваете "undefined" с undefined, который возвращает false =)

Ответ 7

Этот код работает очень хорошо

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