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

Salmann A
Die ausführliche Methode zum Überprüfen, ob der Wert undefiniert oder null ist, lautet:
return value === undefined || value === null;
Sie können auch die verwenden ==
Operator, aber dies erwartet man zu alle Regeln kennen:
return value == null; // also returns true if value is undefined

Kerl
Dies ist die sicherste Überprüfung und ich habe sie hier nicht genau so gepostet gesehen:
if (typeof value !== 'undefined' && value) {
//deal with value'
};
Es wird Fälle abdecken, in denen Wert wurde nie definiert, und auch eine von diesen:
- Null
- undefiniert (Wert von undefiniert ist nicht dasselbe wie ein Parameter, der nie definiert wurde)
- 0
- “” (leerer String)
- falsch
- NaN
Bearbeitet: Auf strikte Gleichheit geändert (!==), weil es inzwischen die Norm ist;)
Vielleicht finden Sie die folgende Funktion nützlich:
function typeOf(obj) {
return {}.toString.call(obj).split(' ')[1].slice(0, -1).toLowerCase();
}
Oder in ES7 (Kommentar bei weiteren 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
typeOf(new WeakMap()) //weakmap
typeOf(new Map()) //map
„Beachten Sie, dass der Bindungsoperator (::) weder Teil von ES2016 (ES7) noch einer späteren 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, die königliche Himmelfahrt zu erhalten.

krupar
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 verwenden:
if (typeof(value) !== "undefined" && value)
oder
if (typeof value !== "undefined" && value)
9639500cookie-checkGibt es eine Standardfunktion, um in JavaScript nach null, undefinierten oder leeren Variablen zu suchen?yes
mögliches Duplikat von Wie suchen Sie in JavaScript nach einer leeren Zeichenfolge?
– Mürrischer hoher Bogen
10. Juni 2013 um 19:40 Uhr
Protip, niemals
(truthy statement) ? true : false;
. Mach einfach(truthy statement);
.– David Baukum
2. August 2017 um 17:55 Uhr
@GeorgeJempty kein Dup, da die andere Antwort danach fragt Saiten insbesondere, während dieser hier nach fragt Variablen.
– Madbreaks
1. Februar 2018 um 0:55 Uhr
Jede richtige Antwort auf diese Frage hängt ganz davon ab, wie Sie “leer” definieren.
– Madbreaks
1. Februar 2018 um 1:03 Uhr
@Jay Es tut nichts weh, was die Ausführung Ihres Codes angeht. Es ist einfach zu ausführlich. Du würdest nicht sagen: “Ist es wahr, bist du hungrig?” Du sagst einfach “Bist du hungrig” also im Code einfach
if (hungry) …
anstattif (hungry === true) …
. Wie alle Dinge auf diese Weise zu codieren, ist es nur eine Frage des Geschmacks. Spezifischer zu dem vom OP bereitgestellten Beispiel sagt er noch ausführlicher: “Wenn es wahr ist, dann wahr, wenn nicht, dann falsch.” Aber wenn es wahr ist, dann ist es bereits wahr. Und wenn es falsch ist, ist es bereits falsch. Das ist so, als würde man sagen: „Wenn du Hunger hast, dann bist du es, und wenn nicht, dann nicht.“– David Baukum
30. Januar 2019 um 22:58 Uhr