ES6 第一章 let与const

第一章  let与const

1.ECMAScript 6.0的简称 ES6

2.ECMAScript 和 JavaScript 的关系是,前者是后者的规格,后者是前者的一种实现

3.ES6 既是一个历史名词,也是一个泛指,含义是 5.1 版以后的 JavaScript 的下一代标准,涵盖了          ES2015、ES2016、ES2017 等等

4.let和var相似,但let只在代码块中有效

5.let不存在变量提升:var命令会发生“变量提升”现象,即变量可以在声明之前使用。

为了纠正这种现象,let命令改变了语法行为,它所声明的变量一定要在声明后使用,否则报错

6.let暂时性死区:只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。只能在声明的位置后使用。

7.在没有let之前,typeof运算符是百分之百安全的,永远不会报错。现在这一点不成立了。这样的设计是为了让大家养成良好的编程习惯,变量一定要在声明之后使用,否则就报错

8.let不允许重复声明:let不允许在相同作用域内,重复声明同一个变量,否则会报错。

9.块级作用域解决问题:①内层变量覆盖外层变量 ②用来计数的循环变量泄露为全局变量

10.块级作用域的特点:①可以任意嵌套 ②内层作用域变量可以与外层作用域变量同名,互不影响③ES6 的块级作用域必须有大括号,如果没有大括号,JavaScript 引擎就认为不存在块级作用域

11.const是一个只读常量,一点定义,常量的值就不能改变。特点:①一旦声明马上赋值②const的作用域与let命令相同:只在声明所在的块级作用域内有效③暂时性死区:只能在声明的位置后使用。④不允许重复声明

12.ES6声明变量的方式有6种:原有两个var,function,新增四个let,const,import,class(后边两个以后会总结)

13.var,function命令声明的全局变量依然是顶层对象(可使用window.name访问),新增的let,const,class声明的全局变量,不属于顶层对象的属性。也就是说,从 ES6 开始,全局变量将逐步与顶层对象的属性脱钩。

14.JavaScript 语言存在一个顶层对象,它提供全局环境(即全局作用域),所有代码都是在这个环境中运行。但是,顶层对象在各种实现里面是不统一的。

浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window。

浏览器和 Web Worker 里面,self也指向顶层对象,但是 Node 没有self。

Node 里面,顶层对象是global,但其他环境都不支持。

你可能感兴趣的:(ES6 第一章 let与const)