← Lekcje
JavaScript · lekcja 03

var i let - pudełka na dane

Dzisiaj:

  1. Czym jest zmienna i jak nadać jej wartość znakiem =?
  2. Dwie różnice między var a let
  3. Zasady nazywania zmiennych
  4. Ćwiczenie przy komputerze: pierwsze własne zmienne
Rozgrzewka · 3 minuty

Rozgrzewka: to, co już wiecie

  1. Gdzie wykonuje się kod JavaScript: na serwerze czy w przeglądarce?
  2. Jakim znacznikiem HTML wstawiamy kod JavaScript do strony?
  3. Jak otworzycie konsolę przeglądarki, żeby zobaczyć wynik console.log?
Część 1 · Zmienna i przypisanie

Czym jest zmienna?

Zmienna to miejsce w pamięci komputera, w którym JavaScript przechowuje wartość pod nazwą, którą sami wybieramy. Życiowe porównanie: zmienna to podpisane pudełko - etykieta to jej nazwa, a to, co włożymy do środka, to jej wartość. Znak = nie oznacza tu równości jak w matematyce, tylko przypisanie: „włóż tę wartość do pudełka”.

let myDog; myDog (puste) = przypisanie myDog = "Rover"; myDog "Rover" let myDog = "Rover"; myDog "Rover" deklaracja i przypisanie naraz
MDN: Learn_web_development/Core/Scripting/Variables (sekcje „Declaring a variable”, „Initializing a variable”)
Część 2 · Punkt zaczepienia

Z PHP już to znacie

Jeśli piszecie też w PHP, to znacie tam zmienne ze znakiem dolara, np. $name = "Ala";. W JavaScript nie ma znaku dolara - zamiast niego przed nazwą piszemy słowo let. Zasada zostaje ta sama: nazwa, znak =, wartość.

PHP $name = "Ala"; znak dolara przed nazwą JavaScript (od dziś) let name = "Ala"; słowo let przed nazwą
MDN: Variables (sekcja „Declaring a variable”)
Część 3 · var i let - różnica pierwsza

var i let: dwa słowa na to samo?

var to najstarszy sposób deklarowania zmiennych w JavaScript. let jest nowszy i naprawia jego problemy. Pierwsza różnica: var pozwala zadeklarować tę samą nazwę drugi raz bez błędu, let - nie.

// var: brak błędu
var myName = "Chris";
var myName = "Bob";
console.log(myName);   // "Bob"

// let: błąd składni
let x = 1;
let x = 2;
// SyntaxError: Identifier 'x' has already been declared

MDN zaleca let zamiast var we wszystkich nowych projektach - wszystkie nowoczesne przeglądarki obsługują let od 2015.

MDN: Variables (sekcja „A note about var”)
Część 4 · var i let - różnica druga

Druga różnica: zasięg bloku

Zmienna var jest widoczna w całej funkcji, nawet poza nawiasami { }, w których powstała. Zmienna let ma plakietkę „widoczna tylko w tym bloku” - poza { }, w których ją zadeklarowano, przestaje istnieć.

if (true) { ... } var a = 1; widoczna ✓ let b = 2; widoczna ✓ wewnątrz bloku { } obie zmienne działają tak samo poza blokiem: console.log(a) 1 - nadal działa console.log(b) ReferenceError

Ciekawostka z MDN: zmienna let od początku bloku aż do miejsca deklaracji jest w tak zwanej „strefie martwej czasowej” (temporal dead zone) - dlatego mówi się, że let nie jest hoistowany, w przeciwieństwie do var.

MDN: Variables (sekcja „A note about var”, zasięg i hoisting) · ciekawostka: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/let (sekcja „Temporal dead zone (TDZ)”)
Część 5 · Nazwy zmiennych

Jak nazwać zmienną?

Nazwa może zawierać litery łacińskie, cyfry i podkreślnik. Nie może zaczynać się od cyfry ani od podkreślnika. Nie może być słowem kluczowym JavaScript (var, let, function, for). Powinna opisywać, co przechowuje. Konwencja zapisu to camelCase: pierwszy wyraz małą literą, kolejne - wielką na początku.

PoprawneNiepoprawneDlaczego
age1agenazwa nie może zaczynać się od cyfry
myAge_agenazwa nie może zaczynać się od podkreślnika
initialColorvarto słowo kluczowe JavaScript, nie wolno go użyć jako nazwy
MDN: Variables (sekcja „An aside on variable naming rules”)
Ćwiczenie przy komputerze · 20 minut

Ćwiczenie: pierwsze własne zmienne

  1. Otwórz plik script.js w folderze ze swoją stroną (ten sam, do którego dołączyliście <script src="script.js"> na poprzedniej lekcji).
  2. Zadeklaruj zmienną let name i przypisz jej swoje imię jako tekst w cudzysłowie.
  3. Zadeklaruj zmienną let age i przypisz jej swój wiek jako liczbę, bez cudzysłowu.
  4. Dopisz console.log(name + " ma " + age + " lat");.
  5. Zapisz plik, odśwież page.html w przeglądarce i sprawdź wynik w konsoli (F12 → Console).
  6. Dla chętnych: zmień w kodzie wartość zmiennej age, zapisz plik i odśwież stronę.
Na koniec

Sprawdź się

  1. Czym różni się zmienna zadeklarowana przez var od zmiennej zadeklarowanej przez let?
  2. Dlaczego nazwa zmiennej nie może zaczynać się od cyfry?
  3. Co się stanie, gdy spróbujemy odczytać zmienną let poza blokiem { }, w którym została zadeklarowana?

Na następnej lekcji: stała const i podstawowe typy danych w JavaScript.

Poza szkołą

A jak to wygląda w produkcji?

Na lekcjiW produkcjiStatus
var - najstarszy sposób deklaracjilet i const, zalecane przez MDN we wszystkich nowych projektach od 2015zastępowane
Zmienna widoczna w całej funkcjiZmienne ograniczone do bloku { }, w którym powstały - mniej pomyłek w dużym kodzienadal w użyciu
Nazwy zmiennych sprawdzane przez człowiekaLinter (np. ESLint) automatycznie sprawdza nazwy i styl kodu w każdym projekcienarzędzia
Literówka w nazwie widoczna dopiero po uruchomieniuEdytor kodu (np. VS Code) podkreśla nieznaną zmienną na bieżąco, przed uruchomieniemnarzędzia
MDN: Variables (sekcje „A note about var”, „When to use const and when to use let”) - rekomendacja od 2015