Tartalomjegyzék

< JavaScript

JavaScript Let

A let és a const kulcsszó

A ES2015 (ECMAScript 2015) két új kulcsszót vezetett be. Ezek:

A let blokk hatókörű változót vezet be. A const segítségével nevesített állandót hozhatunk létre.

Hatókör

var nev = "Nagy János";
 
//itt használható a nev változó
 
function csinald() {
	//itt használható a nev változó
}
//itt NEM használható a nev változó
 
function csinald() {
	var nev = "Nagy János";
	//itt használható a nev változó
}
 
//itt NEM használható a nev változó
{
	var nev = "Nagy János";
	//itt használható a nev változó
}
 
//itt használható a nev változó
{
	let nev = "Nagy János";
	//itt használható a nev változó
}
 
//itt NEM használható a nev változó

Ha függvényen belül hozunk létre var, const vagy let kulcsszóval változót, akkor az sosem látható függvényen kívül. A függvény ilyen szempontból zárt.

A let használata

A let nélkül

console.log(a);
var a = 35;
console.log(a);

A konzol:

undefined
35

A let

console.log(a);
let a = 35;
console.log(a);
Uncaught ReferenceError: Cannot access 'a' before initialization
   at script.js:3
janos@tatami:~/dev/gyak/javascript$ node script.js
/home/janos/dev/gyak/javascript/script.js:3
console.log(a);
            ^

ReferenceError: Cannot access 'a' before initialization
    at Object.<anonymous> (/home/andras/dev/gyak/javascript/script.js:3:13)
    at Module._compile (internal/modules/cjs/loader.js:955:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:991:10)
    at Module.load (internal/modules/cjs/loader.js:811:32)
    at Function.Module._load (internal/modules/cjs/loader.js:723:14)
    at Function.Module.runMain (internal/modules/cjs/loader.js:1043:10)
    at internal/main/run_main_module.js:17:11
janos@tatami:~/dev/gyak/javascript$

A let ciklusban

for(var i=0;i<10;i++){
  console.log(i);
}
console.log(i);

Az utolsó console.log(i) kiírja az i értékét, ami 10.

Ha let kulcsszóval hozom létre az i változót, akkor cikluson kívül már nem látszik az i változó:

for(let i=0;i<10;i++){
  console.log(i);
}
console.log(i);

A ciklus utáni console.log(i) már hibát ad.

Változó újra deklarálása

var nev = "Nagy János";
var nev = "Okos Mária";

A nev változó nem deklarálható újra:

let nev = "Nagy János";
let nev = "Okos Mária"; 

Konzolon a következő hibát kapjuk:

Uncaught SyntaxError: Identifier 'nev' has already been declared

A let és a window objektum

var a = 35;
let b = 45;

console.log(window.a); //35
console.log(window.b); //undefined

Forrás

Forrás: