-
在一个块级作用域中,变量唯一存在,一旦在块级作用域中用let声明了一个变量,那么这个变量就唯一属于这个块级作用域,不受外部变量的影响
var tmp = 'bread and dream'; if(true){ tmp = 'dream or bread'; //ReferenceError let tmp; } // 在if块中的let对tmp变量进行了声明,导致该tmp绑定了这个作用域,而let临时死区导致了并不能在声明前使用,所以在声明前对变量赋值会报错。
-
暂时性死区的本质就是,只要一进入当前作用域,所要使用的变量就已经存在了,但是不可获取,只有等到声明变量的那一行代码出现,才可以获取和使用该变量。
-
暂时性死区的意义也是让我们标准化代码,将所有变量的声明放在作用域的最开始。
- 对于简单类型的数据(数值、字符串、布尔值),值就保存在变量指向的那个内存地址,因此等同于常量
- 但对于复合类型的数据(主要是对象和数组),变量指向的内存地址,保存的只是一个指向实际数据的指针。
-
ES6采用import来代替node等的require来导入模块
import {$} from './jquery.js'
// 重命名 import { JQ as $ } from './jquery.js';
-
import命令具有提升效果,会提升到整个模块的头部,首先执行
-
ES6引入了类的概念,有了class这个关键字。不过类的实质还是函数对象。
-
Class其实就是一个function,但是有一点不同,Class不存在变量提升,也就是说Class声明定义必须在使用之前。
-
- 块级作用域
- 有暂时性死区
- 约束了变量提升
- 禁止重复声明变量
-
- const声明的变量不能重新赋值
- const变量声明时必须初始化