转下ES6的10个重要特性
一、const和、let关键字
- const、let具有块级作用域,不会造成全局污染
- 强制必须先定义再使用
二、Array帮助函数
- forEach
- map
- filter
- find
- every
- some
- reduce
三、箭头函数
箭头函数在定义时已经绑定了this
四、Class
ES6增加了Class类的继承,不过这不会改变原型继承的原理,这里的class其实是原型继承基础上的语法糖
五、增强的对象语法
对象的语法被加强了,可以更容易的:
- 具有相同名称的属性赋值
- 定义函数
- 定义动态属性
六、模板字符串
拼接字符串、替换变量更加方便
七、函数默认参数
给函数参数定义了默认值,当没有传入值的时候值就为默认值
八、扩散和剩余操作符
- 扩散操作符
const a = ...[1,2,3,4] //1 2 3 4
合并数组:
const a = [...[1,2],...[3,4,]] //[1,2,3,4]
还可以解构对象等操作
- 剩余操作符
function a(a, b,...rest){
}
使用一个变量接收参数中剩下的所有参数
九、解包
- 数组解包
function print([,second,,fourth]){
console.log(second,fourth)
}
print([1,2,3,4]) //2 4
- 对象解包
可以把对象的属性解包给同名变量
const person = {
name: 'j',
age: 21,
interest: 'ball'
}
function print({name,interest}){
console.log(name,interest)
}
print(person) //j ball
十、Promise
Promise实际上是你对一个延迟返回的结果的一个期望。
Promise有两个通道:第一个是返回的结果,第二个是可能的错误。
获取结果,为Promise的then方法提供一个回调函数。
捕获发生的错误,为Promise的catch方法提供一个回调函数。
function asyncFunc() {
return new Promise((resolve,reject)=>{
setTimeout(()=>{
const result = Math.random();
result > 0.5 ? resolve(result) : reject('I can not calculate')
},1)
});
}
for(let i=0;i<10;i++){
asyncFunc()
.then(result=> console.log('Result is='+result))
.catch(result=> console.log('Error: '+result))
}