EcmaScript 6 ES6 (później nazwany es2015) dziś skupię się na dwóch nowościach wprowadzonych do języka JavaScript oraz poruszę użyteczność tych dwóch elementów które służą do zdefiniowania zmiennych, a mowa o let i const. Do tego wspomnę jeszcze o var. Wszystkie trzy słowa kluczowe służą do tego samego, lecz każda ma swoje unikalne działanie, zapraszam 🙂
Można się zastanowić i zapytać, po co nam let i const otóż chodzi o zasięg jakim dysponuje zadeklarowana zmienna.
var
Var działa tak, że ma zasięg globalny przez co, jest widoczna wszędzie.
for(var i = 0; i < 5; i++) {
console.log(i); // 0 1 2 3 4
}
console.log(i) // 5
Jak widać wyżej, zmienna i pomimo, że była zadeklarowana w pętli to po za nią dalej istnieje i ma się dobrze. Chcielibyśmy aby zadeklarowana zmienna istniała tylko na potrzebę pętli, aby tego dokonać można użyć let
Let
for(let i = 0; i < 5; i++) {
console.log(i); // 0 1 2 3 4
}
console.log(i) // ReferenceError: i is not defined
Dzięki swojemu zasięgowi blokowemu let po wyjściu z pętli przestaje istnieć, tak jak tego oczekiwaliśmy. Let to po prostu odpowiednik var z zasięgiem blokowym.
Poniższy przykład ładnie pokazuję zasięg let:
function temp (){
let x = 5;
console.log(x); // 5
for(let i = 0; i < 1; i++){
let x = 2;
console.log(x); //2
if (true) {
let x = 3;
console.log(x); // 3
}
console.log(x); // 2
}
console.log(x); // 5
}
function temp (){
let x = 5; // ojciec
console.log(x); // 5
if (true) {
let y = 2; // dziecko
console.log(y); // 2
console.log(x); // 5
}
console.log(x); // 5
console.log(y); // ReferenceError: y is not defined
}
Jak widać w powyższych przykładach zmienna zadeklarowana jako ojciec jest widoczna u potomka oraz u ojca, zaś zmienna zadeklarowana u dziecka jest widoczna tylko u dziecka, ale u ojca nie jest widoczna.
Const
Const jest tak samo ograniczona zasięgiem jak let ale różni się tym, że deklarując zmienną typy const musi być zainicjalizowana a po drugie takiej zmiennej później w programie nie można zmieniać, nie można do niej przypisywać innych wartości.
function temp (){
const x = 5;
console.log(x); // 5
if (true) {
const y = 2;
console.log(y); // 2
console.log(x); // 5
}
console.log(x); // 5
console.log(y); // ReferenceError: y is not defined
}
Powyższy przykład pokazuję, zasięg const, poniższy pokaże, że nie wolno zmieniać zmiennej typu const:
function temp (){
const x = 5;
console.log(x); // 5
if (true) {
const y = 2;
console.log(y); // 2
console.log(x); // 5
y = 4; // SyntaxError: Assignment to constant variable: y. Po tym błędzie aplikacja nie idzie dalej.
x = 9; // SyntaxError: Assignment to constant variable: x
console.log(y);
console.log(x);
}
x = 9; // // SyntaxError: Assignment to constant variable: x
console.log(x); // 5
console.log(y); // ReferenceError: y is not defined
}
Pozdro 🙂
