Jinuss's blog Jinuss's blog
首页
  • 源码合集

    • Leaflet源码分析
    • Openlayers源码合集
    • vue3源码
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)

东流

Web、WebGIS技术博客
首页
  • 源码合集

    • Leaflet源码分析
    • Openlayers源码合集
    • vue3源码
  • HTML
  • CSS
  • 技术文档
  • GitHub技巧
  • 学习
  • 实用技巧
关于
  • 分类
  • 标签
  • 归档
GitHub (opens new window)
  • React

  • Vue

  • JavaScript文章

    • ECMAScript新特性汇总
      • 概述
      • ECMAScript版本
        • ES2016(ES7)
        • includes
        • 对比JS其他搜索方法
        • 注意事项
        • 浏览器兼容性
        • **
        • 浏览器兼容性
        • ES2017(ES8)
        • Object方面
        • 浏览器兼容性
        • 浏览器兼容性
        • String方面
        • 浏览器兼容性
        • async和await
        • 浏览器兼容性
        • SharedArrayBuffer对象
        • 浏览器兼容性
        • Atomics对象
        • 浏览器兼容性
        • ES2018(ES9)
      • ES9聚焦于异步编程、正则表达式和对象操作的标准化。新增的特性如下:
        • ES2019
        • ES2020
        • ES2021
        • ES2022
    • new命令原理
    • ES5面向对象
    • ES6面向对象
    • 多种数组去重性能对比
    • 几个高级的JS API
    • JS随机打乱数组
    • 判断是否为移动端浏览器
    • 防抖与节流函数
    • JS获取和修改url参数
    • 比typeof运算符更准确的类型判断
    • Navigator clipboard介绍使用
    • Javascript 语法错题集
    • ESM和CommonJS详解
    • ColorThief的介绍与使用
    • 三级目录

  • 学习笔记

  • openlayers

  • threejs

  • MapboxGL

  • 工具

  • 源码合集

  • 前端
  • JavaScript文章
东流
2025-07-14
目录

ECMAScript新特性汇总

# 概述

本文会持续更新,汇总了自ECMAScript 2016 版本,即ES7开始的所有版本的新特性。

# ECMAScript版本

# ES2016(ES7)

ES7只有两个新特性

  • Array.prototype.includes:用于判断数组是否存在某元素
  • **:指数运算符

# includes

includes方法会遍历数组(从索引0开始逐个检查,直到找到目标值或搜索完整个数组,如果存在该元素,则返回true,否则返回false。

includes的时间复杂度平均情况为O(n),其中n为数组长度。

# 对比JS其他搜索方法
方法 时间复杂度 是否提前终止 适用场景
includes O(n) 是 检查值是否存在
indexOf O(n) 是 获取值的索引
find O(n) 是 复杂条件搜索
some O(n) 是 条件匹配(返回布尔值)
Set.has O(1) 是 检查值是否存在

因此对于高频搜索或者是大数据量搜索,建议先将数组转为Set,再使用Set.has方法。

# 注意事项
  • includes方法可以查找NaN,而indexOf和indexOf方法不能查找NaN。
  • includes方法是不区分+0和-0
# 浏览器兼容性

# **

**运算符用于指数运算,即返回底数的指数次幂。比如x**y和Math.pow(x,y)是等价的

# 浏览器兼容性

# ES2017(ES8)

ES8 新增了一些新特性,比如:

  • Object.values:返回对象所有属性值value的数组
  • Object.entries:返回对象所有属性键值对[key,value]的数组
  • Object.getOwnPropertyDescriptors:返回对象所有属性的描述符
  • String.prototype.padStart和String.prototype.padEnd:用于字符串补全
  • async/await:异步编程的新方式
  • SharedArrayBuffer:共享内存的新方式
  • Atomics:原子操作的新方式

# Object方面

  • Object.values和Object.entries中返回的数组顺序都是以与for in循环所提供顺序相同,
# 浏览器兼容性
  • Object.getOwnPropertyDescriptors方法会返回指定对象的所有属性描述符,对象自身的属性描述符是直接在对象上定义的,不会从对象的原型继承。
# 浏览器兼容性

# String方面

padStart和padEnd方法用于从前或从后补全字符串,会返回补全后的新字符串,不会改变原字符串。其语法如下:

padStart(targetLength, padString)
padEnd(targetLength, padString)
1
2

targetLength:

  • 目标长度,即补全后的字符串长度
  • 如果目标长度小于等于当前字符串长度,返回当前字符串

padString:

  • 补全字符串,默认使用空格补全
  • 如果padString长度大于目标长度,会截取超出部分
# 浏览器兼容性

# async和await

async和await就是异步编程的语法糖,可以使异步代码看起来像同步代码一样。

# 浏览器兼容性

# SharedArrayBuffer对象

SharedArrayBuffer是一种新的内存模型,用于在多个线程之间共享内存。该模型通常用来表示一个通用的,固定长度的原始二进制数据缓冲区,但是其不能被分离。

# 浏览器兼容性

# Atomics对象

共享内存能被同时创建和更新于工作线程或主线程。

Atomics对象提供了一组静态方法,用于在SharedArrayBuffer对象上执行原子操作。Atomics对象不是构造函数,因此不能使用new运算符,也不能当做函数直接调用。其所有属性和方法都是静态的,类似与Math对象。

# 浏览器兼容性

# ES2018(ES9)

# ES9聚焦于异步编程、正则表达式和对象操作的标准化。新增的特性如下:

# ES2019

# ES2020

# ES2021

# ES2022

编辑 (opens new window)
上次更新: 2025/07/14, 09:14:18
rollup-plugin-visualizer
new命令原理

← rollup-plugin-visualizer new命令原理→

最近更新
01
GeoJSON
05-08
02
Circle
04-15
03
CircleMarker
04-15
更多文章>
Theme by Vdoing | Copyright © 2024-2025 东流 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式