JS TutorialLesson #9

JavaScript Let

The let keyword was introduced in [ES6 (2015)](jses6.asp)

The let keyword was introduced in ES6 (2015)

Variables declared with let have Block Scope

Variables declared with let must be Declared before use

Variables declared with let cannot be Redeclared in the same scope

Share

Block Scope

Before ES6 (2015), JavaScript did not have Block Scope.

JavaScript had Global Scope and Function Scope.

ES6 introduced the two new JavaScript keywords: let and const.

These two keywords provided Block Scope in JavaScript:

Example

Example Code

javascript
Try it Yourself
{

  let x = 2;

  }

// x can NOT be used here

Function Scope

Inside a function all variables declared with var, let or const have Function Scope:

Example

Example Code

javascript
Try it Yourself
function myfunction() {

  var x = 1;

  let y = 2;

  const z = 3;

}

//x can NOT be used here

//y can NOT be used here

//z can NOT be used here

Global Scope

Variables declared with the var always have Global Scope.

Variables declared with the var keyword can NOT have block scope:

Example

Example Code

javascript
Try it Yourself
{

  var x = 2;

  }

// x CAN be used here

Cannot be Redeclared

Variables defined with let can not be redeclared.

You can not accidentally redeclare a variable declared with let.

Example

Example Code

javascript
Try it Yourself
let x = "John Doe";

let x = 0;

Variables defined with var can be redeclared.

Example

Example Code

javascript
Try it Yourself
var x = "John Doe";

var x = 0;

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:

Example

Example Code

javascript
Try it Yourself
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:

Example

Example Code

javascript
Try it Yourself
let x = 10;

// Here x is 10

{

let x = 2;

// Here x is 2
}

// Here x is 10

Difference Between var, let and const

The difference between var, let, and const lies in scoping mechanisms, reassignment rules, and JavaScript hoisting.

Modern JavaScript standards recommend avoiding var to minimize unintentional bugs.
Featurevarletconst
ScopeFunction or global scopeBlock-scope { }Block-scope { }
ReassignmentCan be updatedCan be updatedCannot be updated
RedeclarationCan be redeclaredCannot be redeclaredCannot be redeclared
HoistingInitialized as undefinedHoisted, not initializedHoisted, not initialized
Learn More: > JavaScript Scope > JavaScript Hoisting > JavaScript var/let/const

Redeclaring

Redeclaring a JavaScript variable with var is allowed anywhere in a program:

Example

Example Code

javascript
Try it Yourself
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

Example Code

javascript
Try it Yourself
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:

Example

Example Code

javascript
Try it Yourself
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:

Example

Example Code

javascript
Try it Yourself
carName = "Volvo";

  var carName;

If you want to learn more about hoisting, study the chapter JavaScript Hoisting. 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:

Example

Example Code

javascript
Try it Yourself
carName = "Saab";

let carName = "Volvo";

Video: JavaScript let


Interactive Code Examples

JS Example 1

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
{ 

  let x = 2;

  }

// x can NOT be used here

JS Example 2

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
function myfunction() {

  var x = 1;

  let y = 2;

  const z = 3;

}

//x can NOT be used here

//y can NOT be used here

//z can NOT be used here

JS Example 3

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
{ 

  var x = 2; 

  }

// x CAN be used here

Example 4

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
let x = "John Doe";



let x = 0;

Example 5

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
var x = "John Doe";



var x = 0;

JS Example 6

javascript
Try it Yourself
JavaScript syntax and algorithm demonstration.
var x = 10;

// Here x is 10



{ 

var x = 2;

// Here x is 2
}



// Here x is 2