Wang's blog Wang's blog
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

Wang Mings

跟随大神,成为大神!
首页
  • 前端文章

    • HTML教程
    • CSS
    • JavaScript
  • 前端框架

    • Vue
    • React
    • VuePress
    • Electron
  • 后端技术

    • Npm
    • Node
    • TypeScript
  • 编程规范

    • 规范
  • 我的笔记
  • Git
  • GitHub
  • VSCode
  • Mac工具
  • 数据库
  • Google
  • 服务器
  • Python爬虫
  • 前端教程
更多
收藏
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • Python爬虫

  • 前端教程

    • 团队规范

    • Project

    • JS

      • Canvas基础
      • 数据结构
      • 树的深度优先遍历与广度优先遍历
      • for in和for of区别
      • ES6-新增特性一览
      • ES6-解构赋值及原理
      • ES6-Object
      • ES6-模块详解
      • ES6-Class
      • ES6-ECMAScript特性汇总
        • [#](#es6) ES6
        • [#](#es7) ES7
        • [#](#es8) ES8
        • [#](#es9) ES9
        • [#](#参考文章) 参考文章
      • 输入URL背后的技术步骤
      • JavaScript与浏览器 - 线程与引擎
      • HTTP跨域解决方案
      • Http 2与Http 1.x比较
      • JavaScript原型
      • JavaScript继承
      • JavaScript事件循环
      • 动手实现Promise
      • JS设计模式
      • JS 经典面试题
      • 排序算法
      • 正则表达式
      • MVC、MVP、MVVM区别
      • Array API与V8源码解析
      • 从V8 sort源码看插入排序
    • NodeJS

    • Vue

    • React

    • 效率工具

    • 读书笔记

  • 教程
  • 前端教程
  • JS
wangmings
2022-07-19
目录

ES6-ECMAScript特性汇总

# # ES6-ECMAScript特性汇总

ES6+不仅给javascript语言带来质的飞跃,也在语法层面对开发人员友好了很多,js代码可以写的简洁与工整。这里也推荐大家看笔者整理的AI Javascript风格指南 (opens new window) (opens new window),有很多较长ES5代码转为简洁ES6+的例子。以下汇总ES6+新增的特性,帮助大家更好的在实际编码过程中,应用上这些特性。从tc39/proposals (opens new window) (opens new window)可以看到Javascript 发展委员会TC39已经纳入标准的提案。

# # ES6

详见笔者另外一篇文章:ES6-新增特性一览 (opens new window) (opens new window)

# # ES7

  • Array.prototype.includes()
  • 求幂运算符(**)
    [1,2].indexOf(3) // false
    Math.pow(4,2)== 4 ** 2
    
1
2
3

# # ES8

  • 字符串填充(padStart 和 padEnd)
  • Object.values()
  • Object.entries()
  • Object.getOwnPropertyDescriptors()
  • 函数参数列表和调用中的尾随逗号
  • Async Functions async/await(异步函数)
  • 共享内存 和 Atomics
    'test'.padEnd(8, 'abcd') // 'testabcd'
    
    // Object.values()适用对象和数组
    Object.values({ name: 'Fred', age: 87 }) // ['Fred', 87]
    Object.values(['Fred', 'Tony']) // ['Fred', 'Tony']
    
    // Object.entries()适用对象和数组
    Object.entries({ name: 'Fred', age: 87 }) // [['name', 'Fred'], ['age', 87]]
    Object.entries(['Fred', 'Tony']) // [['0', 'Fred'], ['1', 'Tony']]
    
    async function doSomething() {
        console.log(await doSomethingAsync())
    }
    
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

# # ES9

  • 对象的Rest(剩余)/Spread(展开) 属性
  • Asynchronous iteration for-await-of(异步迭代)
  • Promise.prototype.finally()
  • 正则表达式改进
    • 先行断言(lookahead) 和 后行断言(lookbehind)
    • Unicode 属性转义 \p{…} 和 \P{…}
    • 命名捕获组(Named capturing groups)
    • 正则表达式的 ‘s’ 标志
    [first, second, ...others] = [1, 2, 3, 4, 5] // ES6开始支持数组rest
    const { first, second, ...others } = { first: 1, second: 2, third: 3, fourth: 4, fifth: 5 } // ES9支持对象rest
    
    // 异步迭代
    for await (const data of readFile(filePath)) {
      console.log(data)
    }
    
    // 无论成功还是失败,都会执行finally
    fetch('file.json')
      .then(data => data.json())
      .catch(error => console.error(error))
      .finally(() => console.log('finished'))
    
1
2
3
4
5
6
7
8
9
10
11
12
13
14

持续更新...

# # 参考文章

  • JavaScript 完全手册(2018版) (opens new window) (opens new window)
  • TC39 处理 ECMAScript 新特性的工作流程 (opens new window) (opens new window)
  • New ES2018 Features Every JavaScript Developer Should Know (opens new window) (opens new window)
编辑 (opens new window)
ES6-Class
输入URL背后的技术步骤

← ES6-Class 输入URL背后的技术步骤→

最近更新
01
theme-vdoing-blog博客静态编译问题
09-16
02
搜索引擎
07-19
03
友情链接
07-19
更多文章>
Theme by Vdoing | Copyright © 2019-2022 Evan Xu | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式