Domanda Esiste una funzione standard per verificare le variabili nulle, non definite o vuote in JavaScript?


Esiste una funzione JavaScript universale che controlla che una variabile abbia un valore e garantisce che non lo sia undefined o null? Ho questo codice, ma non sono sicuro che copra tutti i casi:

function isEmpty(val){
    return (val === undefined || val == null || val.length <= 0) ? true : false;
}

1600
2018-04-01 15:14


origine


risposte:


Puoi solo controllare se il variabile ha un truthy valore o no. Questo significa

if( value ) {
}

valuterà a true Se value è non:

  • nullo
  • non definito
  • NaN
  • stringa vuota ("")
  • 0
  • falso

L'elenco sopra rappresenta tutto il possibile falsy valori in ECMA- / Javascript. Trovalo nel specificazione al ToBoolean sezione.

Inoltre, se non lo fai conoscere se esiste una variabile (che significa, se lo fosse dichiarato) dovresti controllare con typeof operatore. Per esempio

if( typeof foo !== 'undefined' ) {
    // foo could get resolved and it's defined
}

Se puoi essere sicuro che a variabile è dichiarato almeno, dovresti controllare direttamente se ha un truthy valore come mostrato sopra.

Ulteriori leggi: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html


3296
2018-04-01 15:17



Il metodo dettagliato per verificare se il valore non è definito o null è:

return value === undefined || value === null;

Puoi anche usare il == operatore ma questo si aspetta che a conoscere tutte le regole:

return value == null; // also returns true if value is undefined

150
2018-04-01 15:20



function isEmpty(value){
  return (value == null || value.length === 0);
}

Questo tornerà vero per

undefined  // Because undefined == null

null

[]

""

e funzioni a zero argomenti da quelle di una funzione length è il numero di parametri dichiarati che prende.

Per disabilitare la seconda categoria, potresti voler controllare le stringhe vuote

function isEmpty(value){
  return (value == null || value === '');
}

55
2018-04-01 15:19



So che questa è una vecchia domanda, ma questa è la verifica più sicura e non l'ho mai vista pubblicata esattamente così:

if (typeof value != 'undefined' && value) {
    //deal with value'
};

Coprirà i casi in cui valore non è mai stato definito, e anche nessuno di questi:

  • nullo
  • undefined (il valore di undefined non è lo stesso di un parametro che non è mai stato definito)
  • 0
  • "" (stringa vuota)
  • falso
  • NaN

Post scriptum non c'è bisogno di una stretta eguaglianza in typeof value! = 'undefined'


26
2017-11-10 16:13



La prima risposta con il miglior punteggio è sbagliata. Se il valore non è definito, genererà un'eccezione nei browser moderni. Devi usare:

if (typeof(value) !== "undefined" && value)

o

if (typeof value  !== "undefined" && value)

25
2018-03-19 13:23



È possibile trovare la seguente funzione utile:

function typeOf(obj) {
  return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}

O in ES7 (commentare se ulteriori miglioramenti)

function typeOf(obj) {
  const { toString } = Object.prototype;
  const stringified = obj::toString();
  const type = stringified.split(' ')[1].slice(0, -1);

  return type.toLowerCase();
}

risultati:

typeOf(); //undefined
typeOf(null); //null
typeOf(NaN); //number
typeOf(5); //number
typeOf({}); //object
typeOf([]); //array
typeOf(''); //string
typeOf(function () {}); //function
typeOf(/a/) //regexp
typeOf(new Date()) //date

"Notare che l'operatore di binding (: :) non fa parte di ES2016 (ES7), né alcuna edizione successiva dello standard ECMAScript, ma è attualmente una fase 0 (strawman) proposta per essere introdotta nella lingua." - Simon Kjellberg. l'autore desidera aggiungere il suo sostegno a questa bellissima proposta per ricevere l'ascensione reale.


23
2018-02-12 10:32



! controlla le stringhe vuote (""), null, undefined, false e il numero 0 e NaN. Dì, se una stringa è vuota var name = "" poi console.log(!name) ritorna true.

function isEmpty(val){
  return !val;
}

questa funzione restituirà true se val è vuoto, nullo, indefinito, falso, il numero 0 o NaN.


16
2018-01-23 06:56



Sei un po 'esagerato. Per verificare se a una variabile non è stato assegnato un valore, è necessario solo verificare contro non definito e nullo.

function isEmpty(value){
    return (typeof value === "undefined" || value === null);
}

Questo è scontato 0, ""e gli oggetti (anche oggetti vuoti e array) sono validi "valori".


10
2018-04-01 15:21