首页 > 编程语言 > 详细

Javascript 之《深入理解ES6》

时间:2021-02-05 12:56:53      阅读:28      评论:0      收藏:0      [点我收藏+]

本文章是读《深入理解ES6》这本书查缺补漏后的整理归纳,如果是小白,那么这篇文章绝对适合你~

第一章 块级作用域和let、const

1、什么是变量提升?

es5中,我们使用var来声明变量,但是var会存在 “变量提升”。

什么是变量提升?就是变量会被提升至当前作用域的最顶端

技术分享图片   技术分享图片

如上图所示,变量value被提升,但是赋值操作被留在了原地,所以其他地方的value值为undefined。

es6引入块级作用域来强化对变量声明周期的控制

2、什么是块级声明?

大白话就是在指定作用域内声明变量,其他作用域无法访问。

书中说的作用域有两种,函数内部,块中(即 { 和 } 中),但是其实有些许不准确。

{...} 并没有形成作用域,而是因为es6中 let、const的特性,让 {...}形成了作用域,如果是在{...}中使用var声明,那么它就不具备作用域的效果。

3、let 声明

先了解下它做重要的2个特性

(1)不存在变量提升

(2)同一个作用域中不能重复定义已经存在的变量

技术分享图片

 4、const 声明

先了解它最重要的几个特性

(1)不存在变量提升

(2)一旦声明必须赋值初始化,一旦赋值不可修改

(3)同一个作用域中不能重复定义已经存在的变量

值得注意的是,const声明变量赋值为基本类型后,再次修改会报错。但是如果赋值引用类型数据,可以修改其值,原因是引用类型数据存储的只是指向真正数据的地址而已,我们修改数据并不会影响这个地址的变化。

5、临时死区(Temporal Dead Zone 简称TDZ)

通常用来描述let、 const的不提升效果。Javascript 引擎在扫描代码时遇到var声明的变量,就将它提升到顶部。遇到 let 或者 const 声明,就将它放到TDZ中。

访问TDZ中的变量就会报错,只有当执行过变量声明的语句,才会从TDZ中移除,然后正常访问。

技术分享图片

这种情况注意一下:

技术分享图片

 

 

 

 持续更新,一天一章~

 

Javascript 之《深入理解ES6》

原文:https://www.cnblogs.com/liandudu/p/14376975.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!