Before the ES6 version of javascript, only the keyword var was used to declare variables.
With the ES6 Version, keywords let and const were introduced to declare variables.

Var: when we declare a variable using var keyword we can use that variable Updated or re-assign and re-declared in entire program that is called global level declaration
var x = 10;
var x; Console.log(x)

Let : Let keyword allows you to declare a variabe with "block scope"
let is block scoped A block is a chunk of code bounded by {}. A block lives in curly braces. Anything within curly braces is a block. So a variable declared in a block with let is only available for use within that block.
let can be updated but not re-declared.
Update
let x = 10;
x = 20;
Redeclare :
Let keyword can't redclare a variable
let x = 10;
x = 20;
Let Keyword does not "hoist". In js a variable can be declared after it has been used.
in other word a variable can be used before it has been declared
{ console.log(x); / x before initization (error) Let x= 10; }

Const : Const keyword allows you t0 declare a variable with a const value.
Const is similar to let variable(declaration) , except that the value cannot be changed
const declarations are block scoped
Like let declarations, const declarations can only be accessed within the block they were declared.
let can be updated but not re-declared.
Update
let x = 10;
x = 20;
Redeclare :
const cannot be updated or re-declared .
This means that the value of a variable declared with const remains the same within its scope. It cannot be updated or re-declared.
const x =3.14; x = 444; / this will give an error X= X+10; / this will give an error }