飞道的博客

ES6、ES7、ES8、ES9、ES10、ES11

303人阅读  评论(0)

目录

一、ES6

二、ES7

三、ES8

四、ES9​​​​​​​


一、ES6

点击跳转

二、ES7

1.Includes方法:检测数组是否包含某个元素,返回布尔值


  
  1. const mingzhu = [ '西游记', '红楼梦', '三国演义', '水浒传'];
  2. console. log(mingzhu. includes( '西游记')); // true
  3. console. log(mingzhu. includes( '金瓶梅')); // false

2.指数操作符 ** 来实现幂运算 , 与Math.pow结果一样


  
  1. // **
  2. console. log( 2 ** 10); // 1024
  3. // Math.pow()
  4. console. log( Math. pow( 2, 10)); // 1024

三、ES8

1.async和await: 这两种语法结合可以让异步代码像同步代码一样

2.promise函数

1)、async函数的返回值为promise对象

2)、promise对象的结果由async函数返回值决定


  
  1. async function fn( ) {
  2. // 1.返回一个不是promise类型的对象, return出去的都是一个成功的promise对象
  3. // return '返回成功的状态'
  4. // 2.抛出错误, return出去的是一个失败的promise
  5. throw new Error( '出错了')
  6. // 3.返回的结果如果是一个promise对象
  7. return new Promise( (resolve, reject) => {
  8. resolve( '我成功返回的就是一个成功的promise');
  9. reject( '我失败返回的就是一个失败的promise');
  10. })
  11. }
  12. const result = fn();
  13. console. log(result);

 通过then、catch获取到的不是promise 而是promise的值


  
  1. // 调用resolve返回成功的promise
  2. async function fn( ) {
  3. return new Promise( (resolve, reject) => {
  4. resolve( '我成功返回的就是一个成功的promise');
  5. reject( '我失败返回的就是一个失败的promise');
  6. })
  7. }
  8. const result = fn();
  9. // 调用 then 方法
  10. result. then( res => {
  11. console. log(res) // 直接打印出primice对象的值 我成功返回的就是一个成功的promise
  12. }). catch( err => {
  13. console. log(err) // 直接打印出primice对象的值 我失败返回的就是一个失败的promise
  14. })

3.await表达式


  
  1. // 创建promise 对象
  2. const p = new Promise( (resolve, reject) => {
  3. resolve( '成功啦');
  4. reject( '失败啦')
  5. })
  6. // await 要放在async函数中
  7. async function main( ) {
  8. try {
  9. let result = await p; // await p 是获取成功的返回值
  10. console. log(result); // 成功啦
  11. } chtch( e) { // e为失败的返回值
  12. console. log(e); // 失败啦
  13. }
  14. }
  15. // 上面的try其实你可以理解为then和catch方法一样记

4.async和await的结合使用把异步变同步


  
  1. const fn1 = ( ) => console. log( "fn1")
  2. const fn2 = ( ) => console. log( "fn1")
  3. const fn3 = ( ) => console. log( "fn1")
  4. // 声明一个async函数
  5. async function main( ) {
  6. let fun1 = await fn1();
  7. let fun2 = await fn2();
  8. let fun3 = await fn3();
  9. console. log(fun1);
  10. console. log(fun2);
  11. console. log(fun3);
  12. }
  13. main();
  14. // 分别打印出:
  15. // fn1
  16. // fn2
  17. // fn3
  18. // 从上到下跟同步一样按顺序执行 因为有一个await关键字 只有上一个await执行完毕了才会执行下一个await

5.Object.keys()和Object.values()


  
  1. const school = {
  2. name: '尚硅谷',
  3. cities: [ '上海', '上海', '深圳'],
  4. xueke: [ '前端', 'java'],
  5. };
  6. // 获取对象的所有键
  7. console. log( Object. keys(school)); // ['name', 'cities', 'xueke']
  8. // 获取对象的所有值
  9. console. log( Object. values(school)); // ['尚硅谷', ['上海', '上海', '深圳'], ['前端', 'java']]

6.entres


  
  1. const school = {
  2. name: '尚硅谷',
  3. cities: '啊啊啊',
  4. xueke: '哦哦哦',
  5. };
  6. console. log( Object. entries(school)); // [["name", "尚硅谷"], ["cities", "啊啊啊"], ["xueke", "xueke"]]

四、ES9

1.对象的rest参数


  
  1. function connect( {host, prot, ...user}) {
  2. console. log(host); // 127.0.0.1
  3. console. log(port); // 3306
  4. console. log(user); // {username: "root", password: "root", type: "mater"}
  5. }
  6. connect({
  7. host: '127.0.0.1',
  8. port: 3306,
  9. username: 'root',
  10. password: 'root',
  11. type: 'mater'
  12. })

2.对象的扩展运算符


  
  1. const skillOne = {
  2. q: '天音波'
  3. }
  4. console. log(...skillOne); // q: '天音波'
  5. const skillTwo = {
  6. W: '金钟罩'
  7. }
  8. const skillThree = {
  9. e: '天雷破'
  10. }
  11. const mangseng = {...skillOne, ...skillTwo, ...skillThree};
  12. console. log(mangseng); // {q: '天音波', W: '金钟罩', e: '天雷破'}

3.正则扩展-命名捕获分组

通过下标捕获分组


  
  1. // 声明一个字符串
  2. let str = '<a href="http:// www.atguigu.com">尚硅谷</a>';
  3. // 提取 url 与 尚硅谷文本
  4. const reg = /<a href="(.*)">(.*)<\/a>/;
  5. // 执行
  6. const result = reg. exec(str); // [0: <a href="http:// www.atguigu.com">尚硅谷</a>, 1: http:// www.atguigu.com, 2: 尚硅谷];
  7. // 获取第一个分组的(.*)的内容
  8. console. log(result[ 1]); // http:// www.atguigu.com
  9. // 获取第二个分组的(.*)的内容
  10. console. log(result[ 1]); // 尚硅谷

通过命名捕获分组


  
  1. // 声明一个字符串
  2. let str = '<a href="http:// www.atguigu.com">尚硅谷</a>';
  3. // 提取 url 与 尚硅谷文本
  4. const reg = /<a href="(?<url>.*)">(?<text>.*)<\/a>/;
  5. // 执行
  6. const result = reg. exec(str);
  7. // 获取命名为url的内容
  8. console. log(result. groups. url); // http:// www.atguigu.com
  9. // 获取命名为text的内容
  10. console. log(result. groups. text); // 尚硅谷

3.正则扩展 - 正向断言


  
  1. // 声明字符串
  2. let str = 'JS5211314你知道么555啦啦啦';
  3. // 正向断言
  4. const reg = /\d+(?=啦)/;
  5. const result = reg. exec(str);
  6. console. log(result[ 0]); // 555

4.正则扩展 - 反向断言


  
  1. // 声明字符串
  2. let str = 'JS5211314你知道么555啦啦啦';
  3. // 反向断言
  4. const reg = /(?<=么)\d+/;
  5. const result = reg. exec(str);
  6. console. log(result[ 0]); // 555

其他的不写了  感觉用不上浪费时间


转载:https://blog.csdn.net/qq_52421092/article/details/127701181
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场