JavaScript实现由ECMAScript、DOM、BOM组成;
ES6即为ECMASript 6(ECMAScript 2015);
这篇blog总结了目前接触到的ES6知识点。
学习文档:阮一峰 ES6标准入门
let与const
let命令
let为ES6新增命令用于声明变量,用法类似与var
特点
只在所在代码块内有效
不存在变量提升(var变量提升:变量可以在声明之前使用,值为undefined)
暂时性死区:只要块级作用域内存在let,那么他所声明的变量就绑定了这个区域,不再受外部的影响
不允许重复声明
const命令
特点const声明的变量,值不能改变
声明前必须初始化
只在块级作用域内使用或者其闭包中使用
不存在变量提升
不可重复声明
只是保证了变量名指向的地址不变,并不保证该地址的数据不变
对象本身冻结:Object.freeze()
块级作用域
ES5只有全局作用域和函数作用域,没有块级作用域
特点
允许块级作用域的任意嵌套
内层作用域可以定义外层作用域的同名变量
块级作用域之中,函数声明语句的行为类似于let,在块级作用域之外不可引用
ES6附录B中规定浏览器
允许在块级作用域内声明函数。
函数声明类似于var,即会提升到全局作用域或函数作用域的头部。
同时,函数声明还会提升到所在的块级作用域的头部。
模板语法
模板字符串
写法 `string${value}`
rest参数
写法 ...变量名
funcion add(…values) {
let sum = 0
for (var val of values) {
sum += val
}
return sum;
}
add(2, 4, 3) //10
严格模式
写法 全局性严格模式`use strict`