A wczoraj to obśmiałem się jak norka z czegoś podobnego, ale IMHO lepszego jeszcze:
W JavaScripcie stała NaN różni się od każdej zmiennej i innej stałej. Różni się nawet od samej siebie :) Istnienie liczby różnej od samej siebie jest piękne. Coraz bardziej lubię JS :)
Niedowierzając odpaliłem to:
if (NaN != NaN) window.alert('NaN różni się sam od siebie xD');
Łaaaał. Tytuł jak w treściach niektórych reklam: "tylko w dobrych sklepach muzycznych", "tylko w dobrych aptekach". Do autora wykopu: pozwól ludziom decydować co dobre i odpowiednie. Nie stosuj takich praktyk na wykopie - dość ich w życiu na co dzień.
Ciekawe ilu z tych, którzy wykopali wiedzą naprawdę o co chodzi a na ilu zadziałało słowo-klucz....
Istnieje funkcja isNaN - dlatego mechanizm jest kompletny i wystarczający. A samo istnienie NaN jest dobre. Nie muszę brać całej operacji ani wywoływać funkcji, żeby sprawdzić czy ona się da wykonać czy nie. Wystarczy mi wynik, zwrócony w dowolnej zmiennej. Mało tego, powiedzmy, że mam 2 operacje, które miały mi zwrócić liczbę, ale z powodu złych danych wejściowych - zwróciły NaN. Dalej mam kod, który ma coś zrobić jeśli te
Całe szczęście, że NaN != NaN - dzięki temu ten kod się nie wykona, bo to, że dwie operacje nie dały się wykonać nie oznacza, że ich wyniki są równe!
Tak, wiem, o tym samym myślałem. Ale to jest właśnie ta nieścisłość, o której piszę. Bo w takim razie wychodzi na to, że porównywanie do NaN, w zależności od sytuacji, oznacza dwie, zupełnie różne rzeczy:
Komentarze (138)
najlepsze
ten obrazek dobrze podsumowuje czym jest ten komiks.
Rozumiem ideę dowcipu, ale wydaje mi się on kompletnie nieśmieszny.
=============
- Dlaczego czarownica na stosie krzyczy "wiecej drzewa! dajcie wiecej drzewa!"?
- Liczy na błąd przepełnienia.
Porównałbym ten żart do... chmmm... nie potrafię porównać.
W JavaScripcie stała NaN różni się od każdej zmiennej i innej stałej. Różni się nawet od samej siebie :) Istnienie liczby różnej od samej siebie jest piękne. Coraz bardziej lubię JS :)
Niedowierzając odpaliłem to:
if (NaN != NaN) window.alert('NaN różni się sam od siebie xD');
... faktycznie.
if (burek == Dog)
Bez sensu. Powinno być raczej coś w stylu metody isNaN() (taka chyba jest) lub nawet isNaNValue() - byłoby lżejsze do strawienia.
Inna sprawa, to dlaczego wartość NaN sama w sobie jest uznana za wartość liczbową? O_o Bo inaczej równanie do NaN powinno zwrócić true.
Warning: possible logical error in your comment in line 2.
Ciekawe ilu z tych, którzy wykopali wiedzą naprawdę o co chodzi a na ilu zadziałało słowo-klucz....
Istnieje funkcja isNaN - dlatego mechanizm jest kompletny i wystarczający. A samo istnienie NaN jest dobre. Nie muszę brać całej operacji ani wywoływać funkcji, żeby sprawdzić czy ona się da wykonać czy nie. Wystarczy mi wynik, zwrócony w dowolnej zmiennej. Mało tego, powiedzmy, że mam 2 operacje, które miały mi zwrócić liczbę, ale z powodu złych danych wejściowych - zwróciły NaN. Dalej mam kod, który ma coś zrobić jeśli te
Tak, wiem, o tym samym myślałem. Ale to jest właśnie ta nieścisłość, o której piszę. Bo w takim razie wychodzi na to, że porównywanie do NaN, w zależności od sytuacji, oznacza dwie, zupełnie różne rzeczy:
- "aaa" == NaN // zwraca true.
- kto tam?
- brainfuck
- aw fuck!