ECMAScript 各个版本(14个)概览,核心示例代码

还是大剑师兰特:曾是美国某知名大学计算机专业研究生,现为航空航海领域高级前端工程师;CSDN知名博主,GIS领域优质创作者,深耕openlayers、leaflet、mapbox、cesium,canvas,webgl,echarts等技术开发,欢迎加底部微信(gis-dajianshi),一起交流。

No.内容链接
1Openlayers 【入门教程】 - 【源代码+示例300+】
2Leaflet 【入门教程】 - 【源代码+图文示例 150+】
3Cesium 【入门教程】 - 【源代码+图文示例200+】
4MapboxGL【入门教程】 - 【源代码+图文示例150+】
5前端就业宝典 【面试题+详细答案 1000+】

在这里插入图片描述


ECMAScript 是定义 JavaScript 语言的标准,由 ECMA International 维护。下面是 ECMAScript 的各个版本以及每个版本发布的时间和一些关键特性:

ECMAScript 版本概览

  1. ECMAScript 1 (ES1) - 1997

    • 第一版标准,定义了基本的语言结构。
  2. ECMAScript 2 (ES2) - 1998

    • 第二版标准,主要是修正和澄清第一版中的一些不明确之处。
  3. ECMAScript 3 (ES3) - 1999

    • 添加了 varfunction 作用域规则、eval 函数、parseIntparseFloat 等。
    • 定义了 Number, String, Boolean, Array, Date, RegExp, Math, 和 JSON 对象。
  4. ECMAScript 5 (ES5) - 2009

    • 引入了 letconst 关键字(在严格模式下可用)。
    • 增加了 Object.create 方法。
    • 定义了 JSON.stringifyJSON.parse 方法。
  5. ECMAScript 6 (ES6, ES2015) - 2015

    • 引入了 letconst 关键字(在非严格模式下可用)。
    • 添加了模板字符串、箭头函数、解构赋值、默认参数、扩展运算符等。
    • 定义了 Promise, Map, Set, WeakMap, WeakSet 等新的数据结构。
    • 引入了 class 语法糖。
  6. ECMAScript 7 (ES7, ES2016) - 2016

    • 引入了 Array.prototype.includes 方法。
    • 添加了指数运算符 **
  7. ECMAScript 8 (ES8, ES2017) - 2017

    • 引入了 async/await
    • 添加了 Object.valuesObject.entries 方法。
    • 引入了 String.prototype.padStartString.prototype.padEnd 方法。
    • 定义了 SharedArrayBufferAtomics API。
  8. ECMAScript 9 (ES9, ES2018) - 2018

    • 添加了 Object.getOwnPropertyDescriptors 方法。
    • 引入了 Promise.finally 方法。
    • 定义了 Rest/Spread 改进。
    • 引入了 async generators
  9. ECMAScript 10 (ES10, ES2019) - 2019

    • 引入了 Array.flatArray.flatMap 方法。
    • 添加了 Object.fromEntries 方法。
    • 定义了 String.prototype.trimStartString.prototype.trimEnd 方法。
    • 引入了 Symbol.description 属性。
  10. ECMAScript 11 (ES11, ES2020) - 2020

    • 引入了 BigInt 数据类型。
    • 添加了 String.prototype.matchAll 方法。
    • 定义了 Promise.allSettled 方法。
    • 引入了 globalThis 对象。
    • 定义了 Temporal 模块(日期/时间处理)。
  11. ECMAScript 12 (ES12, ES2021) - 2021

    • 引入了 String.prototype.replaceAll 方法。
    • 添加了 Promise.any 方法。
    • 定义了 WeakRefs
    • 引入了 Numeric Separators 改进。
  12. ECMAScript 13 (ES13, ES2022) - 2022

    • 引入了顶级 await
    • 添加了 Array.prototype.at 方法。
    • 定义了私有类字段和方法的改进。
    • 引入了静态类特征的改进。
  13. ECMAScript 14 (ES14, ES2023) - 2023

    • 引入了装饰器(Decorators)作为稳定特性。
    • 添加了 Error.cause 属性。
    • 定义了 RecordTuple 类型。
    • Temporal 模块继续得到改进。
  14. ECMAScript 15 (ES15, ES2024) - 2024

    • 预计将包含新的语言特性、API 扩展、性能优化等。

示例代码

这里有一些简单的示例代码,展示了从 ES6 到 ES2023 的一些特性:

ES6 (ES2015)
// 箭头函数
const double = x => x * 2;
console.log(double(5)); // 输出: 10

// 解构赋值
const [first, second] = [1, 2];
console.log(first, second); // 输出: 1 2

// 默认参数
function greet(name = "World") {
  console.log(`Hello, ${name}!`);
}
greet(); // 输出: Hello, World!

// 模板字符串
const name = "Alice";
console.log(`Hello, ${name}!`); // 输出: Hello, Alice!
ES2019 (ES10)
// Array.flat
const arr = [1, 2, [3, [4, 5]]];
const flatArr = arr.flat(2);
console.log(flatArr); // 输出: [1, 2, 3, 4, 5]

// Object.fromEntries
const entries = [['a', 1], ['b', 2]];
const obj = Object.fromEntries(entries);
console.log(obj); // 输出: { a: 1, b: 2 }
ES2020 (ES11)
// BigInt
const largeNumber = 1234567890123456789012345678901234567890n;
console.log(largeNumber + 1n); // 输出: 1234567890123456789012345678901234567891n

// String.prototype.matchAll
const text = "hello world";
const matches = text.matchAll(/l/g);
for (const match of matches) {
  console.log(match.index); // 输出: 2, 3, 9
}
ES2022 (ES13)
// 顶级 await
import { fetchUserData } from './fetchUserData.js';
const user = await fetchUserData();
console.log(user);

// Array.prototype.at
const array = [1, 2, 3, 4, 5];
console.log(array.at(-1)); // 输出: 5
ES2023 (ES14)
// Decorators
function log(target, name, descriptor) {
  const originalMethod = descriptor.value;
  descriptor.value = function(...args) {
    console.log(`Calling "${name}" with`, args);
    return originalMethod.apply(this, args);
  };
  return descriptor;
}

class Greeter {
  @log
  greet(message) {
    console.log(message);
  }
}

const greeter = new Greeter();
greeter.greet("Hello, world!");

以上是对 ECMAScript 各个版本的概述和一些示例代码。

评论 12
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还是大剑师兰特

打赏一杯可口可乐

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值