2012-05-18 8 views

risposta

292

La libreria JQuery è stata sviluppata speci ficamente per semplificare e unificare determinate funzionalità JavaScript.

Tuttavia, se avete bisogno di controllare una variabile contro undefined valore, non c'è bisogno di inventare un metodo speciale, dal momento che JavaScript ha un operatore di typeof, che è semplice, veloce e multi-piattaforma:

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

Restituisce una stringa che indica il tipo di variabile o altro operando non valutato. Il vantaggio principale di questo metodo, rispetto a if (value === undefined) { ... }, è che typeof non genererà mai un'eccezione nel caso in cui la variabile value non esista.

+1

Non funziona con jquery – Hast

+0

Funziona con jQuery 1.7.2.min per me. – Radek

+0

questo è javascript pianura che è fresco, ma ha chiesto di opzione jquery ... – ncubica

12

Nota che restituisce typeof sempre una stringa, e non genera un errore se la variabile non esiste affatto.

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

Per confronto di stringhe, penso che abbiamo bisogno di usare '' === invece di '' == – Sreeram

+0

@Sreeram entrambi fare il confronto, solo in modi diversi ... questo funzionerà bene – RGB

21

In questo caso è possibile utilizzare un confronto === undefined: if(val === undefined)

Questo funziona perché val sempre esiste (si tratta di un argomento della funzione).

Se si desidera verificare una variabile arbitraria che non sia un argomento, ovvero potrebbe non essere definita affatto, sarà necessario utilizzare if(typeof val === 'undefined') per evitare un'eccezione nel caso in cui val non esistesse.

1

È possibile utilizzare la tecnica scorciatoia per verificare se non è definito o null

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

speranza che questo vi aiuterà

+0

Questa dovrebbe essere la risposta accettata a me . –

7

So di essere in ritardo per rispondere alla funzione, ma jquery hanno una funzione di compilazione per fare questo

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

consultare documento API jquery di jquery.type https://api.jquery.com/jQuery.type/ per lo stesso.

+0

Mi piace questo più, semplice e funziona :) – ThisGuyHasTwoThumbs

0

Se avete nomi dell'elemento e non id possiamo ottenere il controllo non definito su tutti gli elementi di testo (per esempio), come di seguito e riempirli con un valore predefinito dire 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') 
    } 
    }) 
1

quando sono test "typeof obj === undefined", alert(typeof obj) restituisce object, anche se obj non è definito. Poiché obj è il tipo di Object il suo ritorno Object, non undefined.

Quindi dopo ore di test ho optato sotto la tecnica.

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

Non so il motivo per cui la prima tecnica non ha work.But ho avere fatto il mio lavoro con questo.

0

io non sono sicuro che è la soluzione migliore, ma funziona bene:

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

provare questo ~ tutti checker tipo

0
if (value === undefined) { 
    // ... 
} 
0

È possibile utilizzare due vie 1) if (val == null) 2) if (val === undefine)