let:

var声明具有变量提升,不管在哪声明,均视为作用域顶部声明

let声明不具备变量提升,离开作用域,变量立刻失效  let适用于局部变量,容易操控且不会导致凌乱

变量提升------->声明前使用,产生的效果不同

 

 

 暂时性死区:

暂时性死区,这段区域使用typeof也会报错   typeof判断未声明变量,只会输出undefined

 

 

 

var可以重复声明,let不能重复声明 否则会报错 只要有let就不可以重复声明变量

 

 

 

 

var和let在循环中的区别:let只在循环内部有效;var全局有效导致后续再使用i会引起干扰,let不会

 

 

 

如果在循环体内设置函数方法,体外输出var会得到不想要的值

用let声明设置多少,显示多少

 

局部变量

在函数体内使用 var 和 let 关键字声明的变量有点类似。

它们的作用域都是 局部的:

// 使用 var
function myFunction() {
    var carName = "Volvo";   // 局部作用域
}

// 使用 let
function myFunction() {
    let carName = "Volvo";   //  局部作用域
}
const:
const作用:创建一个只读的常量,一旦声明不可更改
和let一样const无法提升,也存在暂时性死区
不同:const必须声明完立刻赋值,否则会报错