Operatory porównań w JS

W JS typ danych jest bardziej podpowiedzią dla programisty niż jakimkolwiek limitem. Na przykład taki kod:

var a = 12;
a = "To jest string";

Nie wywoła błędu. Zmienna to po prostu pudełko, co w nią włożymy to tam będzie.

Co jeśli będziemy chcieli porównać dwie wartości?

var a = 10,
    b = '10';
if (a == b) { alert('są równe'); }

Czy oby jednak naprawdę są równe… Jedna zmienna jest liczbą, a druga ciągiem znaków.

I tu właśnie wchodzi operator „identyczności”  `===”.

var a = 10,
    b = '10';
if (a == b) { alert('są równe'); }
if (a === b) { alert('są identyczne'); }

W JS lepiej jest stosować ===, gdyż wtedy dokładnie wiemy co chcemy uzyskać.

Falsy values

Czyli w skrócie te wartości, które są uważane za fałsz w warunkach:

  • undefined – niezdefiniowana zmianna
  • null
  • „” – pusty string
  • 0 – wartość liczbowa
  • NaN – not a number
  • false – typ logiczny

Dla takiego kodu Firefox zwraca wyniki podane jako komentarz:

var a = null;
if (false == a) { alert(a + ' to falsy value 1'); } // "", 0, false
if (!a) { alert(a + ' to falsy value 2'); } // wszystkie
if (false === a) { alert(a + ' to falsy value 3'); } // tylko `false`

Jak widać drugi sposób mówi nam tak naprawdę najmniej. Wiadomo, że coś nie jest prawdą [ale czym tak naprawdę jest to już nikt nie wie].

Jestem zdania, że aby programować dobrze trzeba wiedzieć na jakich typach danych się operuje. Stąd polecam używać operator `===’ w warunkach.

Jeśli zainteresowało cię porównywanie wartości w JS i chciałbyś się o tym dowiedzieć więcej proponuję strony:

1 comment

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *

WordPress spam zablokowany CleanTalk.