Как проверить «неопределенное» значение в jQuery

172

Можно создать дубликат:
Обнаружение объект свойства неопределенного в JavaScript
JavaScript Неопределенного сравнение

Как мы можем добавить проверку неопределенной переменной, например:

function A(val) {
  if (val == undefined) 
    // do this
  else
    // do this
}
Gaurav
источник

Ответы:

379

Библиотека JQuery была разработана специально для упрощения и унификации определенных функций JavaScript.

Однако, если вам нужно проверить переменную по undefinedзначению, нет необходимости изобретать какой-либо специальный метод, поскольку в JavaScript есть typeofоператор, который является простым, быстрым и кроссплатформенным:

if (typeof value === "undefined") {
    // ...
}

Возвращает строку, указывающую тип переменной или другого неоцененного операнда. Основное преимущество этого метода по сравнению с тем if (value === undefined) { ... }, что typeofникогда не будет вызывать исключение в случае, если переменная valueне существует.

зрение
источник
12
@nahum jQuery - это библиотека JavaScript. Это не другой язык программирования.
VisioN
10
LOL OMG вы действительно комментируете это? Я знаю, это тот же человек. Но я думаю, он хочет знать, существует ли какой-нибудь метод в jQuery, например $ .isUndefined (Object); и вернуть значение true или false. typeof это просто JavaScript без каких-либо рамок.
ncubica
Одной из моих проблем было: если вы делаете что-то подобное ("#myId"), убедитесь, что вам действительно нужно: a. typeof ("#myId")=== "undefined" б. Или:typeof ("#myId").val() === "undefined"
Альберичи
3
@Alberici ("#myId")- это не что иное, как строковая константа. Это всегда будет определяться и иметь тип "string". Если вы имеете в виду реальный объект jQuery, созданный с помощью $("#myId"), он всегда будет определяться как "object"(если вы правильно связали jQuery). myIdМожно оценить наличие элемента DOM с идентификатором if ($("#myId").length > 0) { ... }, в то время как проверить, не является ли его значение не пустым, можно с помощью if ($("#myId").val()) { ... }. Ни один из этих пунктов на самом деле не относится к теме этого вопроса.
VisioN
1
@ user3284463 Как уже упоминалось в ответе, simple value === undefinedвызовет исключение, если valueпеременная не существует. Так что вам решать, что использовать в реальной жизни.
VisioN
26

В этом случае вы можете использовать === undefinedсравнение:if(val === undefined)

Это работает, потому что valвсегда существует (это аргумент функции).

Если вы хотите проверить произвольную переменную, которая не является аргументом, то есть может вообще не быть определена, вам придется использовать ее, if(typeof val === 'undefined')чтобы избежать исключения в случае, если valего не существует.

ThiefMaster
источник
16

Обратите внимание, что typeof всегда возвращает строку и не генерирует ошибку, если переменная вообще не существует.

function A(val){
  if(typeof(val)  === "undefined") 
    //do this
  else
   //do this
}
Джинеш Раджпут
источник
1
Для сравнения строк, я думаю, нам нужно использовать ===вместо==
Sreeram
@Sreeram, они оба сравнивают, просто по-разному ... это будет хорошо работать
RGB
10

Я знаю, что опоздал, чтобы ответить на функцию, но JQuery есть встроенная функция, чтобы сделать это

if(jQuery.type(val) === "undefined"){
    //Some code goes here
}

См. Документ API jquery jquery.type https://api.jquery.com/jQuery.type/ для того же.

Arpita
источник
3

Вы можете использовать сокращенную технику, чтобы проверить, является ли она неопределенной или нулевой

 function A(val)
 {
   if(val || "") 
   //do this
 else
 //do this
 }

Надеюсь, что это поможет вам

Рохидас Кадам
источник
2
if (value === undefined) {
    // ...
}
Сандип Кумар
источник
1

когда я тестирую " typeof obj === undefined", alert(typeof obj)возвращаемое значение object, хотя obj не определено. Поскольку obj является типом Objectего возвращения Object, а неundefined .

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

if(document.getElementById(obj) !== null){
//do...
}else{
//do...
}

Я не уверен, почему первая техника не сработала. Но я сделал свою работу, используя это.

Шридхар К
источник
0

Если у вас есть имена элементов, а не id, мы можем выполнить неопределенную проверку всех текстовых элементов (например), как показано ниже, и заполнить их значением по умолчанию, скажем, 0.0:

var aFieldsCannotBeNull=['ast_chkacc_bwr','ast_savacc_bwr'];
 jQuery.each(aFieldsCannotBeNull,function(nShowIndex,sShowKey) {
   var $_oField = jQuery("input[name='"+sShowKey+"']");
   if($_oField.val().trim().length === 0){
       $_oField.val('0.0')
    }
  })
Юзаф Абдулла
источник
0

Я не уверен, что это лучшее решение, но оно прекрасно работает:

if($someObject['length']!=0){
    //do someting
}
ESDU
источник
0
function isValue(value, def, is_return) {
    if ( $.type(value) == 'null'
        || $.type(value) == 'undefined'
        || $.trim(value) == ''
        || ($.type(value) == 'number' && !$.isNumeric(value))
        || ($.type(value) == 'array' && value.length == 0)
        || ($.type(value) == 'object' && $.isEmptyObject(value)) ) {
        return ($.type(def) != 'undefined') ? def : false;
    } else {
        return ($.type(is_return) == 'boolean' && is_return === true ? value : true);
    }
}

попробуйте это ~ все проверки типа

MGK
источник
0

Вы можете использовать два пути 1) if ( val == null ) 2)if ( val === undefine )

Suhag Lapani88
источник