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


172

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

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

function A(val) {
  if (val == undefined) 
    // do this
  else
    // do this
}

Ответы:


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его не существует.


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/ для того же.


3

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

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

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



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
}

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);
    }
}

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


Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.