Como verificar o valor 'indefinido' no jQuery


Respostas:


379

A biblioteca JQuery foi desenvolvida especificamente para simplificar e unificar determinadas funcionalidades do JavaScript.

No entanto, se você precisar verificar uma variável em relação ao undefinedvalor, não será necessário inventar nenhum método especial, pois o JavaScript possui um typeofoperador, que é simples, rápido e multiplataforma:

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

Retorna uma string indicando o tipo da variável ou outro operando não avaliado. A principal vantagem desse método, comparada a if (value === undefined) { ... }, é que typeofnunca gerará uma exceção caso a variável valuenão exista.


12
@nahum jQuery é uma biblioteca JavaScript. Esta não é uma linguagem de programação diferente.
VisioN

9
lol omg você está realmente comentando isso ?? Eu sei que é o mesmo homem. Mas acho que ele quer saber se existe algum tipo de método no jQuery como $ .isUndefined (Object); e retorne o valor verdadeiro ou falso. typeof é apenas javascript, sem qualquer estrutura.
Ncubica 31/05

Um dos meus problemas foi: se você estiver fazendo algo assim ("#myId"), verifique se realmente precisa: a. typeof ("#myId")=== "undefined" b. Ou:typeof ("#myId").val() === "undefined"
Alberici

3
@Alberici ("#myId")nada mais é do que uma constante de string . Sempre será definido e terá um tipo de "string". Se você quer dizer um objeto jQuery real criado com $("#myId"), ele sempre será definido como "object"(se você tiver o jQuery vinculado corretamente). A existência de um elemento DOM com ID myIdpode ser avaliada com if ($("#myId").length > 0) { ... }, enquanto a verificação se seu valor não está vazio pode ser feita if ($("#myId").val()) { ... }. Nenhuma dessas cláusulas realmente se relaciona com o tópico desta pergunta.
VisioN

1
@ user3284463 Conforme mencionado na resposta, simple value === undefinedgerará uma exceção se a valuevariável não existir. Portanto, você decide o que usar na vida real.
VisioN 27/06/16

26

Nesse caso, você pode usar uma === undefinedcomparação:if(val === undefined)

Isso funciona porque valsempre existe (é um argumento de função).

Se você quiser testar uma variável arbitrária que não é um argumento, ou seja, pode não estar definida, você deve usar if(typeof val === 'undefined')para evitar uma exceção caso valnão exista.


16

Observe que typeof sempre retorna uma string e não gera um erro se a variável não existir.

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

1
Para comparação de string, eu acho que nós precisamos usar ===em vez de==
Sreeram

@Sreeram ambos fazem comparação, apenas de maneiras diferentes ... isso vai funcionar muito bem
RGB

10

Eu sei que estou atrasado para responder à função, mas o jquery tem uma função de compilação para fazer isso

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

Consulte o documento da API jquery de jquery.type https://api.jquery.com/jQuery.type/ para o mesmo.


3

Você pode usar a técnica de taquigrafia para verificar se é indefinida ou nula

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

espero que isso ajude você



1

quando estou testando " typeof obj === undefined", o alert(typeof obj)retorno object, mesmo que obj seja indefinido. Como obj é o tipo de Objectretorno Object, nãoundefined .

Então, depois de horas de teste, optei pela técnica abaixo.

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

Não sei por que a primeira técnica não funcionou, mas concluo meu trabalho usando isso.


0

Se você tiver nomes do elemento e não id, podemos obter a verificação indefinida em todos os elementos de texto (por exemplo), como abaixo, e preenchê-los com um valor padrão, digamos 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

Não tenho certeza de que é a melhor solução, mas funciona bem:

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

tente este ~ verificador de todos os tipos


0

Você pode usar em dois sentidos 1) if ( val == null ) 2)if ( val === undefine )

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.