Wie kann ich in JavaScript nach Nullwerten suchen? Ich habe den folgenden Code geschrieben, aber er hat nicht funktioniert.
if (pass == null || cpass == null || email == null || cemail == null || user == null) {
alert("fill all columns");
return false;
}
Und wie finde ich Fehler in meinen JavaScript-Programmen?
javascript
null
compare
Mahdi_Nine
quelle
quelle
null
in js sollten mit dem strengen Operator durchgeführt werden===
Antworten:
Javascript ist sehr flexibel in Bezug auf die Überprüfung auf "Null" -Werte. Ich vermute, Sie suchen tatsächlich nach leeren Zeichenfolgen. In diesem Fall funktioniert dieser einfachere Code:
Welche für leere Strings (wird überprüft
""
),null
,undefined
,false
und die Zahlen0
undNaN
Bitte beachten Sie, dass , wenn Sie speziell für die Zahlen überprüfen es ein häufiger Fehler zu verpassen ist
0
bei dieser Methode, undnum !== 0
bevorzugt (odernum !== -1
oder~num
(Hacky - Code, der auch Kontrollen gegen-1
)) für Funktionen , die Rückkehr-1
, zum BeispielindexOf
)quelle
!
oder!!
testen Sie nicht fürnull
oderundefined
auf typisch numerischen Daten, es sei denn, Sie möchten auch Werte von 00
...". Ich glaube, diese Antwort ist perfekt für die Frage geeignet, da sie angesichts des Kontexts (den ich als "Benutzername, Passwort, E-Mail" bezeichne) nicht nach0
Werten sucht. Angesichts der Beliebtheit dieser Frage und Antwort stimme ich jedoch zu, dass es wert ist, in der Antwort selbst erwähnt zu werden.Um SPEZIFISCH auf Null zu prüfen , würden Sie Folgendes verwenden:
Dieser Test wird nur für passieren
null
und vergehen nicht""
,undefined
,false
,0
, oderNaN
.Zusätzlich habe ich absolute Überprüfungen für jeden "falsch-ähnlichen" Wert bereitgestellt (einer, für den true zurückgegeben wird
!variable
).Beachten Sie, dass Sie für einige der absoluten Prüfungen die Verwendung von
absolutely equals: ===
und implementieren müssentypeof
.Ich habe hier eine JSFiddle erstellt , um zu zeigen, dass alle einzelnen Tests funktionieren
Hier ist die Ausgabe jeder Prüfung:
Wie Sie sehen können, ist es etwas schwieriger, dagegen zu testen
NaN
.quelle
===
strikte Gleichheit verwenden? Vielen Dank. Auch für den NaN-Test können Sie diesen verwendenisNaN(value)
, dertrue
nur zurückgibt, wenn die Variable gleich NaN ist.variable === null
der Typ "Objekt" aber nicht vom Typ ist? Wenn dies nicht der Fall ist, vereinfachen Sie die Überprüfungvariable === null
, indem Sie die zweite Konjunktion wegwerfen. Vielen Dank.variable === null
was ich gerade hier in dieser JSFiddle getestet habe . Der Grund, warum ich auch "&& typeof variable ===" object "" verwendet habe, war nicht nur, um die interessante Tatsache zu veranschaulichen, dass einnull
Wert ein typeof istobject
, sondern auch, um mit dem Fluss der anderen Prüfungen Schritt zu halten. Aber ja, abschließend können Sie sicher einfach verwendenvariable === null
.ersetzen Sie einfach die
==
mit===
in allen Orten.==
ist ein loser oder abstrakter Gleichheitsvergleich===
ist ein strenger GleichheitsvergleichWeitere Informationen finden Sie im MDN-Artikel zu Gleichstellungsvergleichen und Gleichheit .
quelle
undefined
dies nicht in Betracht ziehennull
. Andernfalls kommt es zu vielen unerwarteten Verhaltensweisen. Wenn Sie an beidennull
/undefined
aber nicht an falschen Werten interessiert sind, verwenden Sie im Allgemeinen==
(einer der wenigen Fälle, in denen Sie dies tun sollten).undefined
ist nichtnull
: stackoverflow.com/a/5076962/753237Strenger Gleichheitsoperator: -
Wir können null durch überprüfen
===
Nur mit
if
wird als wahr ausgewertet, wenn der Wert nicht ist :
quelle
Verbesserung gegenüber der akzeptierten Antwort durch explizite Überprüfung,
null
jedoch mit vereinfachter Syntax:quelle
Erstens haben Sie eine return-Anweisung ohne Funktionskörper. Es besteht die Möglichkeit, dass dies einen Fehler auslöst.
Eine sauberere Möglichkeit, Ihre Prüfung durchzuführen, wäre die Verwendung der! Operator:
quelle
Sie können try catch endlich verwenden
Sie können auch
throw
Ihre eigenen Fehler machen. Sehen Sie das .quelle
In JavaScript ist keine Zeichenfolge gleich
null
.Vielleicht haben Sie erwartet
pass == null
, dass es wahr ist, wennpass
es sich um eine leere Zeichenfolge handelt, weil Sie wissen, dass der Operator für lose Gleichheit==
bestimmte Arten von Typenzwang ausführt.Zum Beispiel ist dieser Ausdruck wahr:
Im Gegensatz dazu
===
sagt der strenge Gleichheitsoperator , dass dies falsch ist:Wenn man das bedenkt
''
und0
lose gleich ist, könnte man das vernünftigerweise vermuten''
undnull
ist locker gleich. Dies ist jedoch nicht der Fall.Dieser Ausdruck ist falsch:
Das Ergebnis des Vergleichs einer Zeichenfolge mit
null
ist falsch. Daher sindpass == null
alle Ihre anderen Tests immer falsch, und der Benutzer erhält nie die Warnung.Vergleichen Sie jeden Wert mit der leeren Zeichenfolge, um Ihren Code zu korrigieren:
Wenn Sie sicher sind, dass
pass
es sich um eine Zeichenfolge handelt,pass == ''
funktioniert dies auch, da nur eine leere Zeichenfolge der leeren Zeichenfolge entspricht. Auf der anderen Seite sagen einige Experten, dass es eine gute Praxis ist, in JavaScript immer strikte Gleichheit zu verwenden, es sei denn, Sie möchten speziell den Typzwang ausführen, den der Operator für lose Gleichheit ausführt.Wenn Sie wissen möchten, welche Wertepaare lose gleich sind, lesen Sie die Tabelle "Sameness-Vergleiche" im Mozilla-Artikel zu diesem Thema .
quelle
Um in Javascript nach undefiniert und null zu suchen, müssen Sie nur Folgendes schreiben:
quelle
Dies ist ein Kommentar zu WebWanderers Lösung zur Überprüfung auf NaN (ich habe noch nicht genügend Mitarbeiter, um einen formellen Kommentar zu hinterlassen). Die Lösung lautet wie folgt
aber dies wird für rationale Zahlen scheitern, die sich runden würden
0
, wie zvariable = 0.1
. Ein besserer Test wäre:quelle
parseInt
zuparseFloat
(was für mich eigentlich offensichtlich gewesen sein sollte) reparieren . Ich habe die Verwendung derisNan
Funktion vermieden, weil ich das Gefühl habe, dass viele Entwickler Funktionen wieisNaN
eine Art "Magic Box" anzeigen, in die Werte eingehen und aus denen Boolesche Werte hervorgehen, und ich wollte den Test etwas ausführlicher durchführen. Aber ja, Ihr vorgeschlagener Test wird funktionieren und ist vollkommen in Ordnung zu verwenden. Entschuldigung, ich habe Ihren Beitrag bis jetzt nicht bemerkt.isNaN
, ich kann hinter diese Logik kommen. Es gibt auch die Underscore.js-Methode, die noch verwirrender erscheint / Blackbox, aber trotzdem erwähnenswert, weil sie ausnutztNaN !== NaN
.Object.prototype.toString.call(variable) === '[object Number]' && variable !== +variable
Eigentlich denke ich, dass Sie möglicherweise verwenden müssen,
if (value !== null || value !== undefined)
weil Sie bei Verwendungif (value)
auch 0 oder falsche Werte filtern können.Betrachten Sie diese beiden Funktionen:
In meiner Situation musste ich nur überprüfen, ob der Wert null und undefiniert ist und ich wollte nicht filtern
0
oderfalse
oder''
Werte. Daher habe ich den zweiten Test verwendet, aber möglicherweise müssen Sie sie auch filtern, was dazu führen kann, dass Sie den ersten Test verwenden.quelle
Ich habe einen anderen Weg gefunden, um zu testen, ob der Wert null ist:
null
wirkt alsnumber
undobject
gleichzeitig. Vergleichennull >= 0
odernull <= 0
Ergebnisse intrue
. Ein Vergleichnull === 0
odernull > 0
odernull < 0
führt zu false. Danull
es sich aber auch um ein Objekt handelt, können wir es als Null erkennen.Ich habe eine komplexere Funktion entwickelt , die besser funktioniert als die Art der Hexe und kann sagen, welche Typen eingeschlossen oder gruppiert werden sollen
quelle
Ich habe diese sehr einfache Funktion gemacht, die Wunder wirkt:
Die Route ist jede Wertekette, die explodieren kann. Ich benutze es für jQuery / Cheerio und Objekte und so.
Beispiele 1: Ein einfaches Objekt wie dieses
const testObj = {items: [{ val: 'haya' }, { val: null }, { val: 'hum!' }];};
.Aber es könnte ein sehr großes Objekt sein, das wir noch nicht einmal gemacht haben. Also gebe ich es durch:
Natürlich, wenn Sie es vorziehen, können Sie verwenden
null
oder'No value'
... Was auch immer Ihren Bedürfnissen entspricht.Normalerweise kann eine DOM-Abfrage oder ein jQuery-Selektor einen Fehler auslösen, wenn er nicht gefunden wird. Aber mit so etwas wie:
quelle
Sie können das lodash-Modul verwenden, um zu überprüfen, ob der Wert null oder undefiniert ist
Referenzlink: https://lodash.com/docs/#isNil
quelle
Dies funktioniert nicht, wenn boolesche Werte aus der Datenbank stammen, z.
quelle
AFAIK in JAVASCRIPT Wenn eine Variable deklariert ist , aber keinen Wert zugewiesen hat, ist ihr Typ
undefined
. so können wir Variablen überprüfen , auch wenn es wäre eineobject
gewisse Halt Instanz anstelle von Wert .Erstellen Sie eine Hilfsmethode zum Überprüfen der zurückgegebenen Nullheit
true
und verwenden Sie sie in Ihrer API.Hilfsfunktion zum Überprüfen, ob die Variable leer ist:
Try-Catch-API-Aufruf:
Einige Testfälle:
quelle
isEmpty
Funktion verhält sich genau so!
. Keine Notwendigkeit, eine Funktion zu erfinden. Mach einfachif (!pass || !cpass || !email ...)
. (Was bereits in der akzeptierten Antwort gezeigt wird.) Und gemäß dem Kommentar von WebWanderer scheint der mittlere Teil dieses Beitrags, "Try-Catch-API-Aufruf", für diese Frage nicht relevant zu sein. Bitte erläutern Sie Ihre Absicht - wann ist das sinnvoll? Wie hängt das mit der Frage zusammen?Überprüfen der Fehlerbedingungen:
quelle
Versuche dies:
quelle
if (variable === null)
? Auch jemand hat diese Antwort bereits im letzten Jahr gegeben: stackoverflow.com/a/27550756/218196 .