let
Kata let digunakan jika akan ada menetapkan ulang sebuah variabel. Berdasarkan hal tersebut, cara kerjanya akan seperti _var. _Tapi akan berbeda dibagian jangkauan penggunaan variabelnya.
function varTest() {
var x = 1;
if (true) {
var x = 2; // same variable!
console.log(x); // 2
}
console.log(x); // 2
}
function letTest() {
let x = 1;
if (true) {
let x = 2; // different variable
console.log(x); // 2
}
console.log(x); // 1
}
Global
Keduanya akan serupa ketika dideklarasikan diluar blok fungsi
let me = 'go'; // globally scoped
var i = 'able'; // globally scoped
Tapi, dengan let, variabel tersebut tidak akan masuk ke properti global objek window layaknya var
console.log(window.me); // undefined
console.log(window.i); // 'able'
Fungsi
Keduanya akan bersifat identik ketika disimpan di dalam blok fungsi
function ingWithinEstablishedParameters() {
let terOfRecommendation = 'awesome worker!'; //function block scoped
var sityCheerleading = 'go!'; //function block scoped
}
Blok
Di sini terlihat perbedaan, let hanya dapat diakses di dalam for() loop dan var dapat diakses di dalam blok fungsi tempat dia berada
function allyIlliterate() {
//tuce is *not* visible out here
for( let tuce = 0; tuce < 5; tuce++ ) {
//tuce is only visible in here (and in the for() parentheses)
//and there is a separate tuce variable for each iteration of the loop
}
//tuce is *not* visible out here
}
function byE40() {
//nish *is* visible out here
for( var nish = 0; nish < 5; nish++ ) {
//nish is visible to the whole function
}
//nish *is* visible out here
}
Deklarasi Ulang
Asumsikan dalam mode yang kaku, var akan mengijinkan untuk di deklarasi ulang di wilayah yang sama, sedangkan let tidak
'use strict';
let me = 'foo';
let me = 'bar'; // SyntaxError: Identifier 'me' has already been declared
var me = 'foo';
var me = 'bar'; // No problem, `me` is replaced.