Czy można nadpisać undefined w JavaScript?

W JavaScript, undefined jest prymitywną wartością, która reprezentuje brak przypisanej wartości. W przeszłości, ze względu na mniej ścisłe zasady języka, istniała możliwość nadpisania undefined. Jednak we współczesnym JavaScript (od ECMAScript 5), undefined jest właściwością tylko do odczytu na globalnym obiekcie, co oznacza, że próby jej nadpisania są nieskuteczne w ścisłym trybie (‘use strict’). Sprawdźmy to na przykładzie.

Przykład: próba nadpisania undefined

Zobaczmy kod, który demonstruje próbę nadpisania undefined i jak to się zachowuje w różnych kontekstach.

<!DOCTYPE html>
<html>
<head>
    <title>Nadpisywanie `undefined` w JavaScript</title>
</head>
<body>
    <script>
    'use strict'; // Włączenie ścisłego trybu
    
    // Próba nadpisania `undefined`
    try {
        undefined = 'Nowa wartość';
    } catch (e) {
        console.log('Błąd podczas nadpisywania `undefined`: ', e.message);
    }
    
    // Sprawdzenie czy `undefined` zostało nadpisane
    console.log(undefined); // Nadal wypisuje `undefined`
    
    // Bez ścisłego trybu
    (function() {
        undefined = 'Bez ścisłego trybu';
        console.log('Wartość `undefined` w funkcji bez ścisłego trybu: ', undefined);
        // Nadal `undefined`, ale w niektórych starszych środowiskach
        // może wyświetlić "Bez ścisłego trybu"
    })();
    </script>
</body>
</html>

Omówienie

  • W ścisłym trybie (‘use strict’), każda próba nadpisania undefined kończy się wyjątkiem, co jest pokazane w pierwszej części kodu.
  • Poza ścisłym trybem, starsze środowiska JavaScript mogły pozwalać na nadpisanie undefined, ale we współczesnym JavaScript, nawet w trybie nieścisłym, globalne undefined zachowuje się jako tylko do odczytu.

Podsumowanie

Współczesny JavaScript traktuje undefined jako niezmienną wartość globalną, co oznacza, że nie można jej nadpisać w ścisłym trybie (‘use strict’) i w większości przypadków również poza nim. Jest to ważna cecha języka, zapewniająca spójność i bezpieczeństwo kodu. Stosowanie ścisłego trybu jest zalecane, aby uniknąć potencjalnych problemów i niezamierzonych efektów w kodzie, takich jak niechciane nadpisywanie kluczowych słów lub globalnych wartości, w tym undefined.

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