var

Deklaruje zmienną o zasięgu funkcji. To starszy sposób, dziś zastąpiony przez let i const.

Na tej stronie

Przykład

#
JavaScript
function checkAccess(points) {
  if (points >= 100) {
    var status = 'premium'
  }
  return status
}

console.log(checkAccess(150))
console.log(checkAccess(20))
Konsola
premium
undefined

Definicja i zastosowanie

#

var to najstarszy sposób deklarowania zmiennych w JavaScript. Znajdziesz go w starszych tutorialach, bibliotekach i kodzie sprzed 2015 roku, dlatego warto rozumieć, jak działa, nawet jeśli sam go nie używasz.

Zmienna z var ma zasięg całej funkcji, a nie bloku. Zadeklarowana wewnątrz if albo pętli jest widoczna także poza nimi. Do tego deklaracja jest „wynoszona” (hoisting) na początek funkcji: zmienna istnieje już od pierwszej linii i ma wartość undefined, zanim program dojdzie do przypisania.

Tę samą nazwę można zadeklarować przez var wiele razy bez żadnego błędu. W połączeniu z zasięgiem funkcji łatwo wtedy o przypadkowe nadpisanie wartości, dlatego w nowym kodzie używaj let i const.

Składnia

#
Składnia
var name
var name = value
var name1 = value1, name2 = value2

Więcej przykładów

#
Hoisting: zmienna istnieje przed deklaracją
JavaScript
console.log(bonus)
var bonus = 50
console.log(bonus)
Konsola
undefined
50
Pułapka: var w pętli z opóźnieniem
JavaScript
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log('var:', i), 0)
}

for (let j = 0; j < 3; j++) {
  setTimeout(() => console.log('let:', j), 0)
}
Konsola
var: 3
var: 3
var: 3
let: 0
let: 1
let: 2

Wszystkie funkcje z pierwszej pętli widzą tę samą zmienną i, która po zakończeniu pętli ma wartość 3. let tworzy nową zmienną dla każdego obrotu.

Obsługa przeglądarek

#

Szeroko dostępne

Działa we wszystkich nowoczesnych przeglądarkach, także na telefonach. Możesz używać bez obaw.

  • Chrome
  • Edge
  • Firefox
  • Safari

Dobre praktyki

#
  • W nowym kodzie nie używaj var. let i const mają przewidywalny zasięg blokowy i zgłaszają błąd przy użyciu zmiennej przed deklaracją.
  • Przerabiając stary kod, zamieniaj var na let ostrożnie. Jeśli zmienna była używana poza blokiem, w którym ją zadeklarowano, przenieś deklarację wyżej.
  • W zwykłym skrypcie (poza modułem) var na najwyższym poziomie tworzy właściwość obiektu window. let i const tego nie robią.

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.