Menu

Wartości truthy i falsy w JavaScript: pełna lista

Co w JavaScript jest truthy, a co falsy, pełna lista wartości falsy i jak konwersja na boolean wygląda w prawdziwym kodzie.

Na tej stronie są działające edytory: edytuj, uruchamiaj i od razu zobacz wynik.

Każda wartość ma logiczny „nastrój”

JavaScript pozwala umieścić dowolną wartość tam, gdzie oczekiwany jest boolean: w if, jako warunek while, obok && albo ||. Wtedy wartość zostaje zamieniona na true albo false. Wartości zamieniane na false nazywamy falsy. Wszystkie pozostałe są truthy.

Bez funkcji konwertującej, bez jawnego rzutowania: JavaScript robi to automatycznie. Zasady są stałe i jest ich niewiele, więc gdy znasz listę wartości falsy, cała reszta wynika z niej sama.

Pełna lista wartości falsy

Falsy jest dokładnie siedem wartości. Wszystko inne w języku jest truthy.

To wszystko. Lista:

  • false: sam boolean.
  • 0 i -0: oba zera.
  • 0n: zero typu BigInt.
  • "": pusty string (w pojedynczych, podwójnych cudzysłowach albo backtickach, bez różnicy).
  • null: wartość „celowo nic”.
  • undefined: wartość „nie ustawiono”.
  • NaN: wynik niepoprawnego działania, na przykład 0 / 0.

Zapamiętaj te siedem. Potem, gdy nie masz pewności co do jakiejś wartości, zapytaj: „czy to jedna z tych siedmiu?”. Jeśli nie, jest truthy.

Niespodzianki: "0", [] i {}

Tu początkujący najczęściej się parzą. Wiele wartości wygląda na puste, a jest truthy:

Stringi są falsy tylko wtedy, gdy mają zero znaków. "0" ma jeden znak, więc jest truthy. Tablice i obiekty są zawsze truthy, nawet puste, bo JavaScript traktuje je jako obiekty, a wszystkie obiekty są truthy bez względu na zawartość.

Jeśli przychodzisz z Pythona, to największa zmiana w myśleniu. W Pythonie [] i {} są falsy. W JavaScript nie są.

Jak poprawnie sprawdzić, czy coś jest „puste”

Ponieważ [] i {} są truthy, nie możesz użyć ich bezpośrednio w if, żeby sprawdzić pustość. Pisz jawnie:

Podobnie ze stringami, jeśli string z samych spacji ma być traktowany jako pusty:

Truthy/falsy to wygodny skrót, a nie zastępstwo dla zastanowienia się, co „puste” znaczy dla twoich danych.

Zamiana na prawdziwy boolean

Czasem potrzebujesz prawdziwego true albo false, a nie tylko wartości, która jest truthy. Są na to dwa idiomy:

Boolean(x) to jawna konwersja. !!x to to samo w skrócie: pierwszy ! zamienia wartość na boolean i ją odwraca, drugi ! odwraca ją z powrotem. Oba są popularne. !! jest krótsze, Boolean() czyta się wyraźniej.

!! często zobaczysz w instrukcjach return, gdy funkcja ma zwrócić czysty boolean:

Truthy/falsy z && i ||

Operatory logiczne nie zwracają true ani false, tylko jeden z operandów. Który, zależy od tego, czy wartość jest truthy:

Dlatego value || defaultValue to tak popularny wzorzec wartości domyślnych. Ma jednak pułapkę: traktuje wszystkie wartości falsy tak samo, w tym 0 i "", które często są poprawnymi danymi:

Jeśli wartość domyślna ma działać tylko dla null albo undefined, użyj zamiast tego operatora nullish coalescing ??. Opisujemy go w osobnym dokumencie.

Ściągawka

Wydrukuj ją, przyklej do monitora i żyj dalej.

Dalej: iteratory i generatory

Skoro instrukcje warunkowe i pętle masz już opanowane, następny rozdział pokazuje, jak JavaScript pozwala wartościom powstawać na żądanie. Iteratory i generatory to mechanizm stojący za for...of, spreadem i wieloma nowoczesnymi API. To właśnie one są następne.

Najczęściej zadawane pytania

Jakie wartości są falsy w JavaScript?

Jest ich dokładnie siedem: false, 0, -0, 0n (zero BigInt), '' (pusty string), null, undefined i NaN. Wszystko inne jest truthy, w tym '0', 'false', [] i {}. Zapamiętaj krótką listę wartości falsy, a odpowiedź dla każdej innej wartości znajdziesz przez eliminację.

Czy pusta tablica jest truthy czy falsy w JavaScript?

Truthy. if ([]) { ... } wykonuje blok, co zaskakuje osoby przychodzące z Pythona albo PHP. Tablice i obiekty są obiektami, a wszystkie obiekty są truthy niezależnie od zawartości. Żeby sprawdzić, czy tablica jest pusta, użyj jawnie arr.length === 0.

Jak zamienić wartość na boolean w JavaScript?

Na dwa sposoby: Boolean(value) to forma jawna, a !!value to skrót (podwójna negacja, która konwertuje wartość i odwraca ją z powrotem). Oba działają według tych samych zasad truthy/falsy. Używaj ich, gdy potrzebujesz prawdziwego true/false, a nie tylko wyniku, który jest truthy.

Ilustracja języków programowania w Coddy

Ucz się programowania z Coddy

ZACZNIJ