encyklopedia.space

var

var – słowo kluczowe wykorzystywane w wielu językach programowania do deklarowania zmiennych. Jego główną zaletą jest uproszczenie składni oraz umożliwienie automatycznej inferencji typu zmiennej na podstawie przypisanej wartości. Choć w różnych językach var ma nieco odmienną semantykę, we wszystkich przypadkach służy do oznaczenia, że zmienna ma być zadeklarowana w danym bloku kodu.

Historia i pochodzenie

Pierwsze użycie słowa var jako skrótu od „variable” (zmienna) pojawiło się w języku ALGOL w latach 60. XIX wieku, jednakże powszechna popularność tego słowa kluczowego nastąpiła dopiero w latach 90. wraz z rozwojem języków JavaScript i C#. W ECMAScript 6 (JavaScript) var stał się jedną z trzech dostępnych metod deklaracji zmiennych, obok let i const. W C# po raz pierwszy wprowadzono var w wersji 3.0 (2007), aby wspierać inferencję typów w wyrażeniach LINQ.

Semantyka w najpopularniejszych językach

JavaScript

W JavaScript var deklaruje zmienną o zasięgu funkcyjnym (function‑scoped) oraz umożliwia jej ponowne zadeklarowanie. Przykład:

function przyklad() {
    var liczba = 10;   // zmienna dostępna w całej funkcji
    if (true) {
        var liczba = 20; // nadpisuje poprzednią wartość
    }
    console.log(liczba); // 20
}

W przeciwieństwie do let i const, var nie wprowadza zasięgu blokowego, co w niektórych sytuacjach może prowadzić do nieoczekiwanych zachowań.

C#

W języku C# var nie jest typem, lecz słowem kluczowym wskazującym, że kompilator ma samodzielnie wywnioskować typ zmiennej na podstawie wyrażenia po prawej stronie przypisania. Przykład:

var lista = new List<int>();   // typ zmiennej zostaje wywnioskowany jako List<int>
var wynik = lista.Sum();        // wynik ma typ int

Dzięki temu kod staje się bardziej czytelny, a jednocześnie zachowuje pełną statyczną kontrolę typów.

TypeScript

W TypeScript var zachowuje się tak samo, jak w JavaScript, czyli deklaruje zmienną o zasięgu funkcyjnym. W praktyce zaleca się jednak używanie let i const, które wprowadzają zasięg blokowy i są zgodne z nowoczesnym stylem programowania.

Inne języki

  • VB.NET – słowo Dim pełni podobną rolę, ale nie używa var.
  • Swift – używa var do deklaracji zmiennych mutowalnych, a let dla stałych.
  • Kotlin – analogicznie, var oznacza zmienną mutowalną, val stałą.

Zastosowanie i dobre praktyki

Choć var upraszcza kod, jego nadużywanie może utrudniać czytelność, szczególnie w językach statycznie typowanych. Oto kilka zaleceń:

  • Używaj var wtedy, gdy typ jest oczywisty z kontekstu (np. var lista = new List<int>();).
  • W JavaScript preferuj let lub const, aby uniknąć niezamierzonego hoistingu i problemów ze zasięgiem.
  • W C# stosuj var w wyrażeniach LINQ i przy długich typach generycznych, ale zachowuj jawne typy, gdy ich nieczytelność może wprowadzać zamieszanie.
  • Zawsze staraj się nadawać zmiennym opisowe nazwy, niezależnie od użycia var.

Wersje językowe

Język Od wersji Typ zasięgu Wymagania typowe
JavaScript ECMAScript 1 (1997) Funkcyjny Brak (dynamiczna typizacja)
C# 3.0 (2007) Blokowy (jak każda zmienna w C#) Kompilator musi móc wywnioskować typ
TypeScript 1.0 (2012) Funkcyjny (dziedziczy po JavaScript) Podobnie jak w JavaScript
Swift 1.0 (2014) Blokowy Statyczna inferencja typu
Kotlin 1.0 (2016) Blokowy Statyczna inferencja typu

Powiązane pojęcia

Przykłady kodu

JavaScript – hoisting i zasięg

function demo() {
    console.log(a); // undefined – zmienna jest hoistowana
    var a = 5;
    console.log(a); // 5
}
demo();

C# – inferencja w LINQ

var osoby = new List<Osoba> {
    new Osoba { Imie = "Anna", Wiek = 30 },
    new Osoba { Imie = "Piotr", Wiek = 25 }
};

var młodsi = osoby.Where(o => o.Wiek < 28);
foreach (var o in młodsi) {
    Console.WriteLine(o.Imie);
}

Swift – var vs. let

var licznik = 0   // zmienna mutowalna
let stała = 10    // stała, niezmienna
licznik += 1      // poprawne
// stała += 1     // błąd kompilacji

Patrz także

Bibliografia

  1. ECMAScript 2015 Language Specification, ECMAScript 6.
  2. Microsoft Docs – C# Language Reference, sekcja „var keyword”.
  3. Apple Swift Documentation – “Variables and Constants”.
  4. Kotlin Language Documentation – “Variable Declarations”.