Blog webdeveloperski Patryk yarpo Jar

Operatory porównań w JS

Autor wiadomości Styczeń 19, 2011

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:

Komentarze (1) Trackbacks (0)
  1. Warto nadmienić że operator !a jest dużo wolniejszy od a === 0.


Leave a comment

 

Brak trackbacków.