Przykładowe podchwytliwe zachowania języka JavaScript

JavaScript jest językiem pełnym niespodzianek, a jego elastyczność, choć potężna, czasami prowadzi do nieoczekiwanych i podchwytliwych zachowań. Te zachowania mogą sprawić, że nawet doświadczeni programiści będą musieli dwa razy spojrzeć na kod, aby zrozumieć, co się dzieje. W tej lekcji przyjrzymy się kilku przykładom, które ilustrują, jak JavaScript może zaskoczyć niejednego programistę.

Przykład: Typy i koercja

Jednym z najbardziej podchwytliwych aspektów JavaScriptu jest sposób, w jaki obsługuje on konwersję typów, zwłaszcza w operacjach porównania i arytmetycznych. Zobaczmy to na przykładzie.

Kod HTML z JavaScript

W naszym przykładzie utworzymy prosty fragment HTML z osadzonym kodem JavaScript, który zademonstruje kilka zaskakujących zachowań.

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Podchwytliwe zachowania JavaScript</title>
</head>
<body>
    <script>
        // Porównanie dwóch różnych typów
        console.log("1" == 1); // true, koercja typów
        console.log("1" === 1); // false, brak koercji
        
        // Dodawanie stringa i liczby
        console.log("5" + 5); // "55", konwersja liczby na string
        console.log("5" - 5); // 0, konwersja stringa na liczbę
        
        // Nieoczekiwane wyniki przy porównywaniu null i undefined
        console.log(null == undefined); // true
        console.log(null === undefined); // false
        
        // Zachowanie przy konwersji typów w logicznych kontekstach
        console.log(Boolean("0")); // true
        console.log(Boolean(0)); // false
        console.log(Boolean("")); // false
    </script>
</body>
</html>

W tym przykładzie widzimy, jak JavaScript obsługuje konwersję typów w różnych kontekstach. Porównania przy użyciu == i === dają różne wyniki ze względu na koercję typów. Operacje arytmetyczne na stringach i liczbach mogą prowadzić do nieoczekiwanych wyników, jak w przypadku "5" + 5, co zwraca string "55", a nie liczbę 10.

Podsumowanie

Podchwytliwe zachowania JavaScriptu często wynikają z jego luźnego typowania i automatycznej koercji typów. Chociaż te cechy mogą być przydatne w pewnych sytuacjach, mogą również prowadzić do błędów i niejasności w kodzie. Ważne jest, aby być świadomym tych zachowań i stosować dobre praktyki programowania, takie jak używanie ścisłego porównania (===) i jasne określanie oczekiwanych typów danych, aby uniknąć niespodzianek. Zrozumienie tych subtelności pomoże tworzyć bardziej przewidywalny i niezawodny kod w JavaScript.

Jeżeli chcesz przyśpieszyć swoją naukę tworzenia stron chciałbym polecić mój kurs video JavaScript w którym nauczysz się tego języka od podstaw do zaawansowanych jego aspektów.

Scroll to Top