Wie überprüfe ich in JavaScript auf eine leere/undefinierte/Null-Zeichenfolge?

Lesezeit: 6 Minuten

Benutzer-Avatar
Casademora

Gibt es eine string.Empty in JavaScript, oder ist es nur ein Fall von Überprüfung auf ""?

  • Nur zu Ihrer Information, ich denke, die nützlichsten APIs für die String-Klasse sind bei Mozilla und Javascript-Kit. [elated.com](elated.com/articles/working-with-strings ) hat ein Tutorial zu allen Eigenschaften, Methoden, … von String. Bitte beachten Sie: Der Mozilla-Link wurde auf aktualisiert developer.mozilla.org/en/JavaScript/Reference/Global_Objects/…

    – Gen T

    2. Oktober 2008 um 15:16 Uhr


  • Überprüfen Sie dies: stackoverflow.com/a/36491147/7026966

    – Himanshu Shekhar

    13. Mai 2019 um 10:58 Uhr

  • Es wäre sehr hilfreich, wenn die Anforderung klar spezifiziert wäre. Für welche Werte sollten ist leer Rückkehr wahr? Die Überprüfung auf “” folgert, dass es nur wahr zurückgeben sollte, wenn der Wert Typ Zeichenfolge und Länge 0 ist. Viele Antworten hier gehen davon aus, dass es auch für einige oder alle falschen Werte wahr zurückgeben sollte.

    – RobG

    16. Oktober 2019 um 12:47 Uhr

  • Str.länge > -1

    – Omar Bachsch

    31. Januar 2021 um 4:29 Uhr

  • Ich stimme @RobG voll und ganz zu, diese Frage ist schlecht definiert. Warum um alles in der Welt sollten Sie darüber nachdenken null oder undefined leer? Ein leerer String ist ein leerer String, ist es nicht null oder undefined

    – Flimmer

    11. August 2021 um 14:59 Uhr

Benutzer-Avatar
Jano González

Zum Prüfen, ob eine Variable ist falsch oder wenn das Längenattribut gleich Null ist (was für eine Zeichenfolge bedeutet, dass es leer ist), verwende ich:

function isEmpty(str) {
    return (!str || str.length === 0 );
}

(Beachten Sie, dass Strings nicht die einzigen Variablen mit a sind length Attribut, Arrays haben sie zum Beispiel auch.)

Alternativ können Sie zur Vereinfachung die (nicht so) neu optionalen Verkettungs- und Pfeilfunktionen verwenden:

const isEmpty = (str) => (!str?.length);

Es prüft die Länge und kehrt zurück undefined im Falle eines nullischen Werts, ohne einen Fehler auszulösen. Bei einem leeren Wert ist Null falsch und das Ergebnis noch gültig.

Um zu prüfen, ob eine Variable falsch ist oder ob der String nur Leerzeichen enthält oder leer ist, verwende ich:

function isBlank(str) {
    return (!str || /^\s*$/.test(str));
}

Wenn Du willst, kannst Du Monkey-Patch das String Prototyp so:

String.prototype.isEmpty = function() {
    // This doesn't work the same way as the isEmpty function used 
    // in the first example, it will return true for strings containing only whitespace
    return (this.length === 0 || !this.trim());
};
console.log("example".isEmpty());

Beachten Sie, dass das Monkey-Patching eingebauter Typen umstritten ist, da es aus irgendeinem Grund Code beschädigen kann, der von der bestehenden Struktur eingebauter Typen abhängt.

  • warum 0 === str.length statt str.length === 0 ?

    – Vinzenz

    23. September 2013 um 8:11 Uhr


  • @Vincent Bedingungen werden oft so geschrieben if (variable == constant value) und wenn Sie ein ‘=’ vergessen, weisen Sie der Variablen den konstanten Wert zu, anstatt zu testen. Der Code funktioniert weiterhin, da Sie eine Variable in einem if zuweisen können. Eine sicherere Art, diese Bedingung zu schreiben, besteht also darin, den konstanten Wert und die Variable umzukehren. Auf diese Weise sehen Sie beim Testen Ihres Codes einen Fehler (ungültige linke Seite in der Zuweisung). Sie können auch etwas wie JSHint verwenden, um die Zuweisung in Bedingungen zu verbieten und gewarnt zu werden, wenn Sie eine schreiben.

    – grandouassou

    23. September 2013 um 9:58 Uhr

  • /^\s*$/.test(str) kann durch str.trim().length === 0 ersetzt werden

    – Schadenfreude

    19. Juni 2015 um 12:35 Uhr

  • @Vincent das wird auch “Yoda Conditions” genannt if blue is the sky. Sehen dodgycoder.net/2011/11/yoda-conditions-pokemon-exception.html

    – AZ.

    26. Januar 2016 um 0:12 Uhr

  • Es ist jedoch nicht wirklich eine gute Idee, native Prototypen zu erweitern, es wird allgemein als schlechte Praxis angesehen, von der viele Leute nur abraten, da es sicherere Wege gibt, die genauso gut sind. Es gibt hier eine SO-Diskussion zu diesem Thema, aber jedes JS-Programmierbuch, das ich gelesen habe, hat dringend davon abgeraten. Für OPs Problem mache ich das normalerweise einfach if (!str) { // i am sure str is empty null or undefined here if I'm sure it won't be another data type }

    – Stephen M. Irving

    8. Januar 2020 um 18:55 Uhr


  • Gibt es einen Unterschied zwischen dem Verhalten von if(str) und if(!!str)?

    – Peter Olsen

    19. Dezember 2014 um 18:28 Uhr

  • @PeterOlson Wenn Sie versuchen, eine Variable als booleschen Wert zu speichern, der mehrere Zeichenfolgen auf Inhalt überprüft, sollten Sie dies tun var any = (!!str1 && !!str2 && !!str3) Behandlung, wenn dort auch eine Zahl steht

    – John Ruddell

    10. März 2015 um 23:00 Uhr


  • Das ist die Lösung, die ich immer verwende. !!str.trim() um sicherzustellen, dass der String nicht nur aus Leerzeichen besteht.

    – Dario Oddenino

    11. Februar 2016 um 10:56 Uhr


  • Nicht nicht sieht aus wie ein Hack, Boolean(str) ist viel besser lesbar und weniger “wtfish”.

    – Shinzu

    17. Oktober 2016 um 21:28 Uhr

  • Dies ist einfach nutzlos in einem ifwandelt es falsche Werte in um false und Wahrheitswerte zu true. EIN if Block wird entweder ausgeführt oder nicht, je nachdem, ob der Ausdruck wahr ist, es macht keinen Sinn, etwas hinzuzufügen !!

    – Oli Crt

    8. September 2020 um 9:03 Uhr


Benutzer-Avatar
Ates Goral

Das nächste, was Sie erreichen können str.Empty (mit der Voraussetzung, dass str ein String ist) ist:

if (!str.length) { ...

  • Würde das nicht eine Ausnahme auslösen, wenn str null ist?

    – Bild Michael

    11. September 2018 um 13:50 Uhr

  • @PicMickael Ja! So würde str.Empty.

    – Ates Goral

    12. September 2018 um 3:25 Uhr

  • Beachten Sie, dass Strings nicht der einzige Variablentyp sind, der ein hat length Attribut. Arrays tun es auch.

    – Flimmer

    11. August 2021 um 15:15 Uhr

Benutzer-Avatar
Sugendran

Wenn Sie sicherstellen müssen, dass die Zeichenfolge nicht nur ein Haufen leerer Leerzeichen ist (ich nehme an, dies dient der Formularvalidierung), müssen Sie die Leerzeichen ersetzen.

if(str.replace(/\s/g,"") == ""){
}

  • Würde das nicht eine Ausnahme auslösen, wenn str null ist?

    – Bild Michael

    11. September 2018 um 13:50 Uhr

  • @PicMickael Ja! So würde str.Empty.

    – Ates Goral

    12. September 2018 um 3:25 Uhr

  • Beachten Sie, dass Strings nicht der einzige Variablentyp sind, der ein hat length Attribut. Arrays tun es auch.

    – Flimmer

    11. August 2021 um 15:15 Uhr

Benutzer-Avatar
Scotty Jamison

Ich benutze:

function empty(e) {
  switch (e) {
    case "":
    case 0:
    case "0":
    case null:
    case false:
    case undefined:
      return true;
    default:
      return false;
  }
}

empty(null) // true
empty(0) // true
empty(7) // false
empty("") // true
empty((function() {
    return ""
})) // false

  • Diese Lösung ist sprachunabhängiger. Die einzige JavaScript-Funktion, auf die es sich stützt, ist typeof. Es ist also ein gutes Beispiel für eine Lösung, die Sie verwenden können, wenn Sie den Implementierungen in verschiedenen Browsern nicht vertrauen und keine Zeit haben, eine bessere Lösung zu finden. (IE, kein Internetzugang). Es ist so etwas wie ein Beweis. Nicht das sauberste, aber Sie können sicher sein, dass es funktioniert, ohne zu viel über JavaScript zu wissen.

    – Jeff Davis

    20. April 2012 um 13:11 Uhr


  • Ich würde sogar noch ein bisschen weiter gehen und es mit einem ===-Operator für den undefinierten Fall festnageln. Ansonsten ist es einfach die perfekte Antwort.

    – xarlymg89

    25. Januar 2018 um 10:06 Uhr

  • Das typeof in dem switch hat bei mir nicht funktioniert. Ich habe ein hinzugefügt if (typeof e == "undefined") testen und das geht. Wieso den?

    – Lukas

    17. April 2018 um 11:15 Uhr

  • @Lucas Weil dies ein Tippfehler oder ein Versehen war. Ihre Änderung ist der richtige Ansatz. (Das Original bezieht sich auf den Kontext der leeren Funktion, nicht auf den e-Parameter, den die Funktion überprüfen soll.)

    – beeThree

    25. Februar 2020 um 3:01 Uhr

  • case typeof(e) == "undefined": ist falsch; das passt zu einem e von falsenicht von undefined. Anscheinend war dies eine vorgeschlagene Änderung, die genehmigt wurde. Das Original case typeof this == "undefined": macht immer noch keinen Sinn. Es gibt auch keinen Grund zur Überlegung false, 0und "0" “leer”.

    – Sebastian Simon

    2. Juli 2021 um 0:54 Uhr

1321360cookie-checkWie überprüfe ich in JavaScript auf eine leere/undefinierte/Null-Zeichenfolge?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy