ES7新特性:
1.ES7新特性:
1.1 Array.prototype.includes
includes 方法用来检测数组中是否包含某个元素,返回布尔类型值。
const mingzhu = ['西游记','红楼梦','三国演义','水浒传'];
console.log(mingzhu.includes('西游记'));//-->true
console.log(2**10);//-->1024
1.2 指数操作符:
在ES7中引入指数运算符(**),用来实现幂运算,功能与Math.pow结果相同。
2.ES8新特性:
2.1 async 和 await
async 和 await 两种语法结合可以让异步代码像同步代码一样。
2.1.1 async函数
1.async 函数的返回值为promise对象。
2.promise 对象的结构由 async 函数执行的返回值决定。
1.返回的结果不是一个Promise类型的对象, 则async修饰的这个函数的返回结果就是一个promise对象,且对象的状态是成功的,成功的值是return出的值。 2.抛出错误,返回的结果是一个失败的Promise对象。throw new Error(‘出错了’); 3.return如果是一个promise对象。那么返回的结果就是promise且promise的状态和值与return中的promise相同。
<script>
// async 函数
async function fn(){
// 1.返回的结果不是一个Promise类型的对象,
// 则async修饰的这个函数的返回结果就是一个promise对象,且对象的状态是成功的,成功的值是return出的值。
// return;
// 2.抛出错误,返回的结果是一个失败的Promise对象
// throw new Error('出错了');
// 3.return如果是一个promise对象。那么返回的结果就是promise且promise的状态和值与return中的promise相同。
return new Promise((resolve,reject)=>{
resolve("成功的数据");
});
}
const result = fn();
console.log(result);
// 既然fn()返回的是promise对象,那么它就可以调用then方法
result.then(value => {
// 鉴于上面的promise是成功的,走这里
console.log(value);
},reason => {
console.warn(reason);
})
</script>
2.1.2 await 表达式
1.await 必须写在async函数中,但对于async函数而言await不是必须的。
2.await右侧的表达式一般为promise对象。
3.await返回的是promise成功的值。
4.await的promise失败了,就会抛出异常,需要通过try…catch捕获处理。
<script>
// 创建promise对象
const p = new Promise((resolve,reject)=>{
// resolve("成功的值!");
reject("失败失败!")
})
// await 要放在async函数中。
async function main(){
try{
// 这里的result返回的是promise对象成功的值,如果失败,需要另外捕获。
let result=await p;
console.log(result);//-->成功的值!
}catch(e){
console.log(e);//-->失败失败!
}
}
// 调用函数
main();
</script>
2.2 Object.values 和 Object.entries
1.Object.values()方法返回一个给定对象的所有可枚举属性值的数组。
2.Object.entries()方法返回一个给定对象自身可遍历属性[key,value]的数组。
3.Object.getOwnPropertyDescriptors()方法,返回对象属性的描述对象。