This site is mobile accessible. Press the "Tap Here" button to use a different font-size.
Tap Here! Smartphone icons created by Freepik - Flaticon
2.2 JS Let
The let keyword was introduced in ES6 (2015)
Variables defined with let cannot be Redeclared
Variables defined with let must be Declared before use
Variables defined with let have Block Scope
Cannot be Redeclared
Variables defined with let can not be redeclared.
You can not accidentally redeclare a variable declared with let .
With let you can not do this:
let x = "John Doe";
let x = 0;
With var you can:
var x = "John Doe";
var x = 0;
Block Scope
Before ES6 (2015), JavaScript had Global Scope and Function Scope .
ES6 introduced two important new JavaScript keywords: let and const .
These two keywords provide Block Scope in JavaScript.
Variables declared inside a { } block cannot be accessed from outside the block:
Example
{
let x = 2;
}
// x can NOT be used here
Variables declared with the var keyword can NOT have block scope.
Variables declared inside a { } block can be accessed from outside the block.
Example
{
var x = 2;
}
// x CAN be used here
Redeclaring Variables
Redeclaring a variable using the var keyword can impose problems.
Redeclaring a variable inside a block will also redeclare the variable outside the block:
var x = 10;
// Here x is 10
{
var x = 2;
// Here x is 2
}
// Here x is 2
Redeclaring a variable using the let keyword can solve this problem.
Redeclaring a variable inside a block will not redeclare the variable outside the block:
let x = 10;
// Here x is 10
{
let x = 2;
// Here x is 2
}
// Here x is 10
Difference Between var, let and const
Keywords
Scope
Redeclare
Reassign
Hoisted
Binds this
var
No
Yes
Yes
Yes
Yes
let
Yes
No
Yes
No
No
const
Yes
No
No
No
No
What is Good?
let and const have block scope .
let and const can not be redeclared .
let and const must be declared before use.
let and const does not bind to this.
let and const are not hoisted .
What is Not Good?
var does not have to be declared.
var is hoisted.
var binds to this.
Browser Support
The let and const keywords are not supported in Internet Explorer 11 or earlier.
The following table defines the first browser versions with full support:
Chrome 49
Edge 12
Firefox 36
Safari 11
Opera 36
Mar, 2016
Jul, 2015
Jan, 2015
Sep, 2017
Mar, 2016
Redeclaring
Redeclaring a JavaScript variable with var is allowed anywhere in a program:
var x = 2;
// Now x is 2
var x = 3;
// Now x is 3
With let , redeclaring a variable in the same block is NOT allowed:
Example
var x = 2; // Allowed
let x = 3; // Not allowed
{
let x = 2; // Allowed
let x = 3; // Not allowed
}
{
let x = 2; // Allowed
var x = 3; // Not allowed
}
Redeclaring a variable with let , in another block, IS allowed:
let x = 2; // Allowed
{
let x = 3; // Allowed
}
{
let x = 4; // Allowed
}
Let Hoisting
Variables defined with var are hoisted to the top and can be initialized at any time.
Meaning: You can use the variable before it is declared:
This is OK:
carName = "Volvo";
var carName;
You will learn more about hoisting in a later chapter.
Variables defined with let are also hoisted to the top of the block, but not initialized.
Meaning: Using a let variable before it is declared will result in a ReferenceError :
carName = "Saab";
let carName = "Volvo";
Module 2. Variables, Operators and Assignment
JavaScript icons used in the buttons provided by ICONS8.COM . Smartphone icons created by Freepik - Flaticon
Example files created in this module:
JavaScript Variables part 1
JavaScript Variables part 2
JavaScript Variables part 3
JavaScript Variables part 4
JavaScript Variables part 5
JavaScript Variables part 6
JavaScript Variables part 7
JavaScript Variables part 8
JavaScript Variables part 9
JavaScript Variables part 10
JavaScript Variables part 11
JavaScript Variables part 12
JavaScript Variables part 13
JavaScript Operators part 1
JavaScript Operators part 2
JavaScript Operators part 3
JavaScript Operators part 4
JavaScript Arithmetic part 1
JavaScript String Operators part 1
JavaScript String Operators part 2
JavaScript String Operators part 3
JavaScript Arithmetic part 2
JavaScript Arithmetic part 3
JavaScript Arithmetic part 4
JavaScript Arithmetic part 5
JavaScript Arithmetic part 6
JavaScript Arithmetic part 7
JavaScript Arithmetic part 8
JavaScript Arithmetic part 9
JavaScript Arithmetic part 10
JavaScript Arithmetic part 11
JavaScript Arithmetic part 12
JavaScript Arithmetic part 13
JavaScript Arithmetic part 14
JavaScript Arithmetic part 15
JavaScript Arithmetic part 16
JavaScript assignment part 1
JavaScript assignment part 2
JavaScript assignment part 3
JavaScript assignment part 4
JavaScript assignment part 5
JavaScript assignment part 6
JS Let - Redeclaring a Variable Using var part 1
JS Let - Redeclaring a Variable Using let
JS Let - Redeclaring a Variable Using var part 2
JS Let - Redeclaring a Variable Using let part 2
JS Hoisting - var Hoisting
JS Hoisting - let Hoisting
JS const - const Cannot be Reassigned
JS const - Constant Arrays part 1
JS const - Constant Arrays part 2
JS const - Constant Objects part 1
JS const - Constant Objects part 2
JS const - Block Scope
JS Hoisting - Hoisting var part 1
JS Hoisting - Hoisting const