ECMAScript 6 第一天 let和const命令

时间:2021-07-18 06:00:52

ES6新增声明变量的方法let命令,const命令。

(ES5只有两种声明变量的方法:var 命令和 function 命令。)

let命令,用来声明变量。

与var声明变量不同于:

1.  let声明变量不存在变量提升。(一定要先声明在使用否则报错 )。

2.  let命令不允许在同一作用域内,重复声明同一个变量。

3.  let声明的变量,只在let命令所在的代码块内有效。

4. 只要块级作用域内存在let命令,它所声明的变量就“绑定”(binding)这个区域,不再受外部的影响。

ES6的let命令实际上为JavaScript新增了块级作用域。

关于函数声明

1. 避免在块级作用域内声明函数。(如果需要,应写成函数表达式,而不是函数声明语句)。

2. 允许声明函数,只在使用大括号的情况下成立,如果没有使用大括号,就会报错。

3. 非ES6的浏览器环境下,将块级作用域的函数声明当作let处理。

const命令,声明一个只读的常量。

与let声明的变量不同于:

1. 常量一旦声明,常量的值就不能改变。(应初始化即赋值,不能留到以后赋值)。

2. 对于复合类型的变量,const命令可保证变量名指向的地址不变(即不能把变量名指向另一个地址,对象本身可变。)

全局对象的属性

全局对象是 最顶层的对象。

  • 浏览器里面,顶层对象是window,但 Node 和 Web Worker 没有window
  • 浏览器和 Web Worker 里面,self也指向顶层对象,但是Node没有self
  • Node 里面,顶层对象是global,但其他环境都不支持。

ES5之中,全局对象的属性与全局变量是等价的,

ES6之中,var命令和function命令声明的全局变量,依旧是全局对象的属性;

另一方面规定,let命令、const命令、class命令声明的全局变量,不属于全局对象的属性。