【技术笔记】let 和 var和const的异同

一,let 和 var

1. 作用域

let作用域小,是块级的,且相同作用域内不能出现相同的变量定义。

    for循环里的let i,i出了循环就失效了。

var作用域大,是全局或者函数内级别的,且相同作用域内可以出现相同的变量定义(值是后面的覆盖前面的)。

    for循环里的var i,i出了循环依然能够被读取。

2. 预处理机制,声明提升

let没有声明提升,js运行到该行语句时才会产生该let变量,也就是说提前使用会报错。

var无论在何处定义,js都会把它的声明提前到函数开始,不过也只是声明提前,赋值不会提前,提前使用值为undefined。

3. let变量默认值不是undefined

let不初始化就打印会报错。

var不初始化打印不报错,默认值为undefined。

 

二,var和const

var和const的作用域一样,都是代码块级别。

let声明普通变量,不必赋初值,可随时改值。

const声明常量,必须赋初值,不可改值(除非是对象或引用类)

 

Guess you like

Origin blog.csdn.net/ttyt1217/article/details/106010628