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
Dimpełni podobną rolę, ale nie używavar. - Swift – używa
vardo deklaracji zmiennych mutowalnych, aletdla stałych. - Kotlin – analogicznie,
varoznacza zmienną mutowalną,valstałą.
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
varwtedy, gdy typ jest oczywisty z kontekstu (np.var lista = new List<int>();). - W JavaScript preferuj
letlubconst, aby uniknąć niezamierzonego hoistingu i problemów ze zasięgiem. - W C# stosuj
varw 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
- Zmienna
- Typy danych
- Inferencja typów
- Zasięg (scope)
- Hoisting (w kontekście JavaScript)
- Dynamiczna typizacja
- Statyczna typizacja
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
- let – słowo kluczowe deklarujące stałe w JavaScript, C#, Swift i innych językach.
- const – stała w JavaScript i C#.
- ECMAScript 6 – wersja standardu JavaScript wprowadzająca
leticonst. - LINQ – językowa integracja zapytań w C#, często używana razem z
var.
Bibliografia
- ECMAScript 2015 Language Specification, ECMAScript 6.
- Microsoft Docs – C# Language Reference, sekcja „var keyword”.
- Apple Swift Documentation – “Variables and Constants”.
- Kotlin Language Documentation – “Variable Declarations”.