ES6 新特性
ES6 新特性
本文只是简单概括ES6的一些新特性,想要详细了解,可以参阅MDN ES6入门
ECMAScript 6.0(以下简称ES6)是JavaScript语言的下一代标准,已经在2015年6月正式发布了。它的目标,是使得JavaScript语言可以用来编写复杂的大型应用程序,成为企业级开发语言。
let 与 const
ES2015(ES6)
新增加了两个重要的JavaScript
关键字: let
和const
。 ES6
明确规定,代码块内如果存在let
或者const
,代码块会对这些命令声明的变量从块的开始就形成一个封闭作用域。代码块内,在声明变量之前使用它会报错,称为暂时性死区。 ES6
的块级作用域必须有大括号,如果没有大括号,JavaScript
引擎就认为不存在块级作用域。
let
和const
只能声明一次,var
可以声明多次。var
会变量提升,let
与const
也存在变量提升但有所不同。const
声明一个只读的常量,一旦声明,常量的值就不能改变。const
和let
在全局作用域中声明的变量不会挂载到window
上。let
和const
声明的变量只在其声明所在的代码块内有效,形成块级作用域。const
其实保证的不是变量的值不变,而是保证变量指向的内存地址所保存的数据不允许改动。对于基本数据类型number、string 、boolean
等,值就保存在变量指向的那个内存地址,因此const
声明的简单类型变量等同于常量。而引用类型object,array,function
等,变量指向的内存地址其实是保存了一个指向实际数据的指针,所以const
只能保证指针是固定的,至于指针指向的数据结构变不变就无法控制了。
解构赋值
ES6
允许按照一定模式,从数组和对象中提取值,对变量进行赋值,这被称为解构赋值。
1 |
|
Symbol
ES6
引入了一种新的原始数据类型Symbol
,表示独一无二的值,最大的用法是用来定义对象的唯一属性名。 ES6
数据类型除了Number
、String
、Boolean
、 Object
、null
和undefined
,还新增了 Symbol
。
1 |
|
Spread / Rest 操作符
Spread
用于将数组作为参数直接传入函数。
1 |
|
Rest
用于函数传参传递数组。
1 |
|
箭头函数
ES6
中,箭头函数就是函数的一种简写形式,使用括号包裹参数,跟随一个 =>
,紧接着是函数体,特别需要注意的是箭头函数是继承当前上下文的this
关键字。
1 |
|
参数默认值
1 |
|
迭代器
Symbol.iterator
一个统一的接口,它的作用是使各种数据结构可被便捷的访问。- for of 是 ES6 新引入的循环,用于替代
for..in
和forEach()
。
类
ES6
提供了更接近传统语言的写法,引入了class
这个概念,作为对象的模板。通过class
关键字,可以定义类,与多数传统语言类似。不过,ES6
的class
不是新的对象继承模型,它只是原型链的语法糖表现形式。
1 |
|
Promise 对象
Promise
是异步编程的一种解决方案。
从语法上说,Promise
是一个对象,从它可以获取异步操作的消息。
Promise异步操作有三种状态:pending
、fulfilled
和rejected
。除了异步操作的结果,任何其他操作都无法改变这个状态。then
方法接收两个函数作为参数,第一个参数是Promise
执行成功时的回调,第二个参数是 Promise
执行失败时的回调,两个函数只会有一个被调用。
1 |
|