Frage Gibt es eine Standardfunktion, um in JavaScript auf leere, nicht definierte oder leere Variablen zu prüfen?


Gibt es eine universelle JavaScript-Funktion, die überprüft, ob eine Variable einen Wert hat und sicherstellt, dass dies nicht der Fall ist? undefined oder null? Ich habe diesen Code, aber ich bin mir nicht sicher, ob er alle Fälle abdeckt:

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

1601
2018-04-01 15:14


Ursprung


Antworten:


Sie können nur überprüfen, ob die Variable hat ein truthy Wert oder nicht. Das bedeutet

if( value ) {
}

wird ausgewertet werden true ob value ist nicht:

  • Null
  • nicht definiert
  • NaN
  • leerer String ("")
  • 0
  • falsch

Die obige Liste repräsentiert alle möglichen falsy Werte in ECMA- / Javascript. Finde es in der Spezifikation Bei der ToBoolean Sektion.

Außerdem, wenn Sie das nicht tun kennt ob eine Variable existiert (dh ob sie existiert) erklärt) sollten Sie mit dem typeof Operator. Zum Beispiel

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

Wenn Sie sicher sein können, dass a Variable Ist zumindest deklariert, sollten Sie direkt prüfen, ob es eine hat truthy Wert wie oben gezeigt.

Weiter lesen: http://typeofnan.blogspot.com/2011/01/typeof-is-fast.html


3296
2018-04-01 15:17



Die ausführliche Methode zum Überprüfen, ob der Wert nicht definiert oder null ist:

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

Sie können auch die == Betreiber aber erwartet dies kenne alle Regeln:

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

Dies wird für wahr zurückgegeben

undefined  // Because undefined == null

null

[]

""

und Null-Argument-Funktionen seit einer Funktion length ist die Anzahl der deklarierten Parameter.

Um die letztere Kategorie zu verbieten, sollten Sie nur nach leeren Zeichenfolgen suchen

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

55
2018-04-01 15:19



Ich weiß, dass dies eine alte Frage ist, aber das ist die sicherste Überprüfung und ich habe es hier nicht genau so gepostet:

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

Es wird Fälle abdecken, in denen Wert wurde nie definiert, und auch keiner von diesen:

  • Null
  • undefined (Wert von undefined ist nicht dasselbe wie ein Parameter, der nie definiert wurde)
  • 0
  • "" (leerer String)
  • falsch
  • NaN

P.S. keine Notwendigkeit für strenge Gleichheit in typeof value! = 'undefiniert'


26
2017-11-10 16:13



Die erste Antwort mit der besten Bewertung ist falsch. Wenn der Wert nicht definiert ist, wird in modernen Browsern eine Ausnahme ausgelöst. Sie müssen Folgendes verwenden:

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

oder

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

25
2018-03-19 13:23



Sie können die folgende Funktion nützlich finden:

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

Oder in ES7 (Kommentar für weitere Verbesserungen)

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

  return type.toLowerCase();
}

Ergebnisse:

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

"Beachten Sie, dass der Bindeoperator (: :) weder Teil von ES2016 (ES7) noch irgendeine spätere Ausgabe des ECMAScript-Standards ist. Es ist derzeit ein Vorschlag der Stufe 0 (Strohmann), um in die Sprache eingeführt zu werden." - Simon Kjellberg. der Autor möchte seine Unterstützung für diesen schönen Vorschlag hinzufügen, um königlichen Aufstieg zu erhalten.


23
2018-02-12 10:32



! Suche nach leeren Strings (""), null, undefined, false und die Zahl 0 und NaN. Angenommen, eine Zeichenfolge ist leer var name = "" dann console.log(!name) kehrt zurück true.

function isEmpty(val){
  return !val;
}

Diese Funktion gibt true zurück, wenn if val ist leer, null, undefiniert, falsch, die Zahl 0 oder NaN.


16
2018-01-23 06:56