let var const

let、var、const的异同主要有以下几点:

1. var 可以声明前置

a = 3
var a 
var a =4

2.let 不可声明前置

a = 5 
let a //报错
image.png

3.var可以重复声明,let不可重复声明

image.png
image.png

4.let存在块级作用域,var则没有。

image.png

函数外不能够访问函数内的变量,而var则不存在这种情况

image.png

5.let存在暂时性死区(TDZ):在let声明变量之前都是该变量的死区,在死区内该变量不可使用。看不懂不要紧,看下面的例子。

先看var的这段代码会输出什么?

console.log(a);
var a = 12;

如果你了解变量预编译过程,变量提升,那么很容易就会知道,这段代码相当于:

var a 
console.log(a)

因此,会输undefined.


image.png

而在ES6中,使用let命令,会产生什么样的结果呢?

alert(a)
let a  = 12

浏览器会直接报错,这就是let的暂时性死区


image.png
alert(a);//TDZ暂时性死区
let a = 12;//TDZ结束

对TDZ期间中的变量/常量作任何的访问动作,一律会抛出错误。

6.适用于let的同样适用于const

7.const声明的变量不可改变

const a = 1
a = 2 //报错

const obj = {a: 1}
obj.a = 2   //没问题
obj = {a: 2}  //报错

你可能感兴趣的:(let var const)