[[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)