Cómo verificar el valor 'indefinido' en jQuery


Respuestas:


379

La biblioteca JQuery fue desarrollada específicamente para simplificar y unificar ciertas funciones de JavaScript.

Sin embargo, si necesita verificar una variable contra un undefinedvalor, no es necesario inventar ningún método especial, ya que JavaScript tiene un typeofoperador, que es simple, rápido y multiplataforma:

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

Devuelve una cadena que indica el tipo de la variable u otro operando no evaluado. La principal ventaja de este método, en comparación con if (value === undefined) { ... }, es que typeofnunca generará una excepción en caso de que la variable valueno exista.


12
@nahum jQuery es una biblioteca de JavaScript. Este no es un lenguaje de programación diferente.
VisioN

10
lol omg realmente estás comentando esto? Sé que es el mismo hombre. Pero supongo que quiere saber si existe algún tipo de método en jQuery como $ .isUndefined (Object); y devuelve el valor verdadero o falso. typeof es solo javascript sin ningún marco.
ncubica

Uno de mis problemas fue: si está haciendo algo como esto ("#myId"), asegúrese de lo que realmente necesita: a. typeof ("#myId")=== "undefined" si. O:typeof ("#myId").val() === "undefined"
Alberici

3
@Alberici ("#myId")no es más que una constante de cadena . Siempre se definirá y tendrá un tipo de "string". Si te refieres a un objeto jQuery real creado con $("#myId"), siempre se definirá como "object"(si tienes jQuery vinculado correctamente). La existencia de un elemento DOM con ID myIdse puede evaluar con if ($("#myId").length > 0) { ... }, mientras que se puede verificar si su valor no está vacío if ($("#myId").val()) { ... }. Ninguna de estas cláusulas se relaciona realmente con el tema de esta pregunta.
VisioN

1
@ user3284463 Como se menciona en la respuesta, simple value === undefinedgenerará una excepción si la valuevariable no existe. Entonces, depende completamente de usted qué usar en la vida real.
VisioN

26

En este caso puedes usar una === undefinedcomparación:if(val === undefined)

Esto funciona porque valsiempre existe (es un argumento de función).

Si desea probar una variable arbitraria que no es un argumento, es decir, podría no estar definida en absoluto, tendría que usarla if(typeof val === 'undefined')para evitar una excepción en caso de valque no existiera.


16

Tenga en cuenta que typeof siempre devuelve una cadena y no genera un error si la variable no existe en absoluto.

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

1
Para la comparación de cadenas, creo que debemos usar en ===lugar de==
Sreeram

@Sreeram ambos hacen una comparación, solo de diferentes maneras ... esto funcionará bien
RGB

10

Sé que llego tarde para responder la función, pero jquery tiene una función de compilación para hacer esto

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

Consulte el documento de la API jquery de jquery.type https://api.jquery.com/jQuery.type/ para obtener el mismo.


3

Puede usar la técnica abreviada para verificar si es indefinida o nula

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

Espero que esto te ayudará



1

cuando estoy probando " typeof obj === undefined", el alert(typeof obj)regreso object, aunque obj no está definido. Como obj es el tipo de Objectsu retorno Object, no undefined.

Entonces, después de horas de prueba, opté por la siguiente técnica.

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

No estoy seguro de por qué la primera técnica no funcionó, pero terminé mi trabajo usando esto.


0

Si tiene nombres del elemento y no ID, podemos lograr la verificación indefinida en todos los elementos de texto (por ejemplo) como se muestra a continuación y llenarlos con un valor predeterminado, 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

No estoy seguro de que sea la mejor solución, pero funciona bien:

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

intente esto ~ todo tipo de corrector


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.