[[oktatas:web:javascript|< JavaScript]]
====== JavaScript Let ======
* **Szerző:** Sallai András
* Copyright (c) Sallai András, 2020, 2023
* Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC Attribution-Share Alike 4.0 International]]
* Web: https://szit.hu
===== A let és a const kulcsszó =====
A ES2015 (ECMAScript 2015) két új kulcsszót vezetett be.
Ezek:
* let
* const
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. (/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:
* https://www.geeksforgeeks.org/difference-between-var-and-let-in-javascript/ (2020)
* https://www.w3schools.com/js/js_let.asp (2020)
* https://codeburst.io/difference-between-let-and-var-in-javascript-537410b2d707 (2020)