Jak w temacie. O ile żaden IDE nie "zabroni" mi czegoś takiego, o tyle są chyba jakieś "dobre praktyki", zgodnie z którymi tego nie powinienem robić. Więc co, w nowych projektach definitywnie nie używać var?
0
2
A po co chciałbyś korzystać z var
? let
też powinno być jak najmniej.
4
wady var
:
-
zasięg od razu na całą funkcję, niezależnie gdzie zadeklarujesz (
const
ilet
mają zasięg na blok, więc są wygodniejsze w obsłudze i nie wymagają sztuczek z IIFE).np. chcemy wyświetlać liczby w callbacku i ten kod nie zadziała z
var
:
function foo(a) {
for (var i = 0; i < 10; i++) {
setTimeout(() => {
console.log(i) // WTF!!!! pokaże zawsze 10, jeśli używasz var
}, 0);
}
}
z let zadziała (używając var robiło się tak, że opakowywało się to w wewnętrzną funkcję i od razu się wywoływało podając aktualną wartość i
)
- możesz się odwoływać do zmiennych, zanim je zainicjalizujesz:
function foo() {
console.log(a); // przypuszczalnie pomyłka programisty
var a = 10;
}
let
i const
mają temporary dead zone, która chroni przed tym i jak spróbujesz się dostać do zmiennej przed deklaracją, to zgłosi błąd
- nie ma błędu, jak kilka razy zadeklarujesz to samo
function foo(a) {
var a = 10; // let i const dają już tu błąd
}
Ogólnie więc... po co używać var
w nowych projektach?
3
Używaj wszędzie const
, chyba że musisz zredefiniować zmienną, wtedy let
. Nie używaj var
nigdy.