全面解析var、const、let的区别

作用域:变量作用域(全局变量和局部变量) 、函数作用域(函数内部的变量)

作用域链:其实就是一些可访问对象的集合。比如函数执行时会产生一个活动对象,活动对象中。

在JavaScript中,函数也是对象,实际上,JavaScript里一切都是对象。函数对象和其它对象一样,拥有可以通过代码访问的属性和一系列仅供JavaScript引擎访问的内部属性。其中一个内部属性是[[Scope]],该内部属性包含了函数被创建的作用域中对象的集合,这个集合被称为函数的作用域链,它决定了哪些数据能被函数访问。

当一个函数创建后,它实际上保存一个作用域链,并且作用域链会被创建此函数的作用域中可访问的数据对象填充。

 

var:

1、可能存在声明提前

     var声明未初始化的变量会提升

     未声明的变量赋值的变量会提升

     只有var声明初始化的变量不会提升

2、能重复声明、能重复赋值

3、不存在块作用域

 

let:

1、不存在声明提前,在块作用域的顶端会有暂时性死区。

2、不能重复声明、能重新赋值

3、存在块作用域

 

const:

同于let,区别在于const不能重复赋值。

 

var声明的变量需要注意的是,函数内部函数执行完成即可销毁,如果在window作用域下,则在关闭页面时才会销毁。

结语:那么何时使用let、const呢,如果只是引用,请使用let、const。循环中,优先使用let。

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章