Do porównania dwóch wartości w JavaScript używa się zapisu === lub == . Wynikiem porównania === będzie „true” tylko w sytuacji, gdy zarówno typ danych jak i wartość będą sobie równe. Oznacza to, że wynikiem porównania 99 === „99” będzie false ponieważ pierwsza wartość jest liczbą, a druga to String. Żeby w powyższym przykładzie uzyskać wynik „true” należałoby najpierw dokonać konwersji typów co dzieje się automatycznie dzięki == .

Jak działa konwersja?

  • Jeżeli wartość typu String porównuje się z liczbą JS próbuje zamienić String na liczbę. Jeżeli to się powiedzie to zamieniona liczba jest porównywana. Jeżeli nie to wartość zamieniona jest na NaN.
  • Wartość typu boolean zamieniana jest na liczbę według: true = 1; false = 0.

Przykłady porównań:

  • 99 == "99" -> true; ponieważ prawa strona zamieniona jest na liczbę i następnie następuje porównanie
  • 50 == "test" -> false; prawej strony nie udało się skonwertować na liczbę w wyniku czego „test” został zamieniony na NaN (Not a Number)
  • 1 == true -> true; wartości boolean zamieniane są na liczby (true = 1, false = 0)
  • "1" == true -> true; prawa wartość identycznie jak powyżej ma wartość 1, następnie lewa strona zamieniona jest na liczbę i porównana
  • 1 == "" -> false; lewa strona zamieniona jest na 0, w wyniku czego wynikiem jest false
  • "true" == true -> false; lewa strona wyrażenia zamieniona jest na NaN, a prawa na 1 w wyniku czego uzyskujemy watość false

Podobnie dzieje się w przypadku działań arytmetycznych, gdy po dwóch stronach działania znajdują się różne typy. Wyjątkiem jest dodawanie, które oznacza konkatenację czyli operację łączenia stringów. Gdy jeden z elementów równania jest to string zamiast działania uzyskujemy połączenie stringów.

  • "107" + 91 = "10791" – jedna ze stron to String dlatego następuje konkatenacja
  • 7 + "1 9" = "71 9" – jedna ze stron to String dlatego następuje konkatenacja
  • 3 + " drzwi" = "3 drzwi" – jedna ze stron to String dlatego następuje konkatenacja
  • 18 + 20 = 38 – dwie liczby z tego powodu uzyskujemy normalne działanie
  • "1" - "1" = 0 – dwa stringi, ale operacja odejmowania (przy dodawaniu wynikiem byłoby 11), tutaj wynikiem jest konwersja „1” na 1 oraz normalne odejmowanie
  • "75b" - 15 = NaN – nie udało się zamienić „75b” na liczbę w wyniki pojawił się NaN (Not a Number)
  • 1 + true = 2 – wartość boolean true zamieniona jest na liczbę 1, a następnie zsumowane 1 + 1
  • "1" - true = 0 – jeden String, ale operacja odejmowania, dzięki temu „1” zamieniona na liczbę oraz true zamieniona na 1

Powyższe przykłady oraz jeszcze więcej zobaczyć można poniżej na screenie z console.log:

JS - konwersje typów danych w Java Script

Kontynuując przeglądanie strony, wyrażasz zgodę na używanie przez nas plików cookies. dowiedz się więcej

Aby zapewnić Tobie najwyższy poziom realizacji usługi, opcje ciasteczek na tej stronie są ustawione na "zezwalaj na pliki cookies". Kontynuując przeglądanie strony bez zmiany ustawień lub klikając przycisk "Akceptuję" zgadzasz się na ich wykorzystanie.

Zamknij