这么好的东西我不予许你不知道——ECMAScript !

ECMAScript 是一种标准化的脚本语言,由 Ecma International 通过 ECMA-262 标准进行定义和维护。它最初是 Netscape 公司开发的 JavaScript 的标准化版本,但随着时间的发展,ECMAScript 已经成为了世界上最广泛使用的通用编程语言之一,不仅在 Web 浏览器中广泛应用,也在服务器端和嵌入式应用中得到越来越多的使用。

ECMAScript 标准的发展历程

早期历史
  • 1995年:Netscape 公司的 Brendan Eich 开发了一种脚本语言,最初命名为 Mocha,后来改名为 LiveScript,最终重命名为 JavaScript。
  • 1996年11月:Netscape 将 JavaScript 提交给 Ecma International 进行标准化。
  • 1997年6月:ECMA-262 第一版发布,标志着 ECMAScript 标准的诞生。
重要版本
  • ES3 (1999年12月):ECMAScript 3.0 版本发布,成为 JavaScript 的通行标准,得到了广泛支持。
  • ES5 (2009年12月):ECMAScript 5.0 版本发布,引入了许多重要特性,如数组方法、对象方法、字符串方法等。
  • ES5.1 (2011年6月):ECMAScript 5.1 版本发布,并成为 ISO 国际标准(ISO/IEC 16262:2011)。
  • ES6/ES2015 (2015年6月):ECMAScript 6 版本发布,引入了模块系统、类、箭头函数、模板字符串、解构赋值、默认参数、剩余参数、扩展运算符、Promise、Symbol、Set、Map 等重要特性。
  • ES2016 (2016年6月):ECMAScript 2016 版本发布,增加了 Array.prototype.includes 方法和指数运算符 **
  • ES2017 (2017年6月):ECMAScript 2017 版本发布,引入了异步函数 (async/await)、共享内存和原子操作等。
  • ES2018 (2018年6月):ECMAScript 2018 版本发布,增加了异步迭代器、正则表达式改进、对象解构赋值默认值等。
  • ES2019 (2019年6月):ECMAScript 2019 版本发布,增加了 flat 和 flatMap 方法、trimStart 和 trimEnd 方法、Object.fromEntries 方法等。
  • ES2020 (2020年6月):ECMAScript 2020 版本发布,增加了 BigInt 类型、动态 import() 表达式、空值合并运算符 ??、可选链操作符 ?. 等。
  • ES2021 (2021年6月):ECMAScript 2021 版本发布,增加了逻辑赋值运算符(如 &&=||=??=)、字符串的 replaceAll 方法等。
  • ES2022 (2022年6月):ECMAScript 2022 版本发布,增加了 at 方法、类私有属性、顶级 await 等。
  • ES2023 (2023年6月):ECMAScript 2023 版本发布,增加了 Intl.SegmenterIntl.NumberFormat 的 compact 选项等。
  • ES2024 (2024年6月):ECMAScript 2024 版本发布,增加了 Map.groupBy 和 Object.groupBy 方法,以及 ArrayBuffer 的 resize 和 transfer 功能等。

ECMAScript 标准的主要内容

ECMAScript 标准文档详细定义了语言的各个方面,确保了不同实现之间的互操作性和一致性。以下是 ECMAScript 标准的主要内容:

1. 语法
  • 关键字:定义了语言中的关键字,如 varletconstfunctionifelseforwhile 等。
  • 标识符:定义了合法的标识符命名规则,包括字母、数字和特殊字符。
  • 字面量:定义了各种字面量的语法,如数字字面量、字符串字面量、模板字符串、正则表达式字面量等。
2. 类型
  • 原始类型
    • undefined:表示未定义的值。
    • null:表示空值。
    • boolean:表示布尔值,如 true 和 false
    • number:表示数字,包括整数和浮点数。
    • string:表示字符串。
    • symbol:表示唯一的标识符,主要用于对象属性的键。
    • bigint:表示任意精度的整数。
  • 引用类型
    • object:表示复杂的数据结构,如对象、数组、函数等。
    • array:表示有序集合。
    • function:表示可执行的代码块。
    • date:表示日期和时间。
    • regex:表示正则表达式。
    • map 和 set:表示键值对集合和唯一值集合。
    • weakmap 和 weakset:表示弱引用的键值对集合和唯一值集合。
3. 语句和声明
  • 变量声明
    • var:函数作用域的变量声明。
    • let:块作用域的变量声明。
    • const:块作用域的常量声明。
  • 函数声明
    • 普通函数声明。
    • 箭头函数声明。
    • 生成器函数声明。
    • 异步函数声明。
  • 控制流语句
    • if 和 else:条件语句。
    • switch:多条件选择语句。
    • for 和 while:循环语句。
    • do...while:先执行后判断的循环语句。
    • break 和 continue:跳出循环或跳过当前循环的剩余部分。
    • return:从函数中返回值。
    • try...catch...finally:错误处理语句。
    • with:将一个对象作为作用域链的一部分。
4. 表达式
  • 算术表达式:如加法、减法、乘法、除法、取模等。
  • 关系表达式:如等于、不等于、大于、小于等。
  • 逻辑表达式:如逻辑与、逻辑或、逻辑非等。
  • 位运算表达式:如按位与、按位或、按位异或、左移、右移等。
  • 赋值表达式:如简单赋值、复合赋值等。
  • 条件表达式:如三元运算符 ? :
  • 函数调用表达式:调用函数或方法。
  • 对象和数组字面量:创建对象和数组。
5. 函数
  • 函数定义:使用 function 关键字定义函数。
  • 箭头函数:使用 => 符号定义函数,具有更简洁的语法和不同的 this 绑定。
  • 生成器函数:使用 * 符号定义生成器函数,支持生成器迭代。
  • 异步函数:使用 async 和 await 关键字定义和调用异步函数。
6. 对象
  • 对象创建:使用对象字面量 {} 或 new Object() 创建对象。
  • 属性访问:使用点运算符 . 或方括号运算符 [] 访问对象属性。
  • 方法调用:调用对象的方法。
  • 原型和继承:定义对象的原型链,实现继承。
7. 内置对象
  • Math:提供数学函数和常量。
  • Date:处理日期和时间。
  • Array:处理数组。
  • String:处理字符串。
  • RegExp:处理正则表达式。
  • Map 和 Set:处理键值对集合和唯一值集合。
  • WeakMap 和 WeakSet:处理弱引用的键值对集合和唯一值集合。
  • Promise:处理异步操作的结果。
  • Symbol:创建唯一的标识符。
  • BigInt:处理任意精度的整数。
8. 错误处理
  • try...catch...finally:捕获和处理异常。
  • Error:表示错误对象。
  • TypeError:表示类型错误。
  • ReferenceError:表示引用错误。
  • SyntaxError:表示语法错误。
  • RangeError:表示值超出有效范围。
  • URIError:表示 URI 操作错误。
9. 模块系统
  • 导入模块:使用 import 关键字导入模块。
  • 导出模块:使用 export 关键字导出模块。
  • 动态导入:使用 import() 表达式动态导入模块。
10. 异步编程
  • Promise:表示异步操作的结果,可以注册回调函数处理成功或失败的结果。
  • async/await:简化异步编程,使用 async 关键字定义异步函数,使用 await 关键字等待异步操作的结果。

ECMAScript 的标准化流程

ECMAScript 的标准化流程由 Ecma International 的第 39 号技术委员会(Technical Committee 39,简称 TC39)负责。TC39 由各大浏览器厂商和其他相关公司的代表组成,负责制定和维护 ECMAScript 标准。标准化流程包括以下几个阶段:

  1. Stage 0 (Strawman):初步提议阶段,通常是社区或个人提出的想法。
  2. Stage 1 (Proposal):正式提案阶段,需要详细的提案文档和至少一个实验实现。
  3. Stage 2 (Draft):草案阶段,需要详细的规范文本和至少两个实验实现。
  4. Stage 3 (Candidate):候选阶段,需要详细的规范文本、广泛的审查和至少两个规范实现。
  5. Stage 4 (Finished):完成阶段,提案被纳入下一个版本的 ECMAScript 标准。

ECMAScript 的实现

虽然 ECMAScript 是一个标准,但不同的 JavaScript 引擎(如 V8、SpiderMonkey、JavaScriptCore 等)可能会有不同的实现。因此,某些新特性可能在不同浏览器或环境中支持情况不同。开发者可以使用工具如 Babel 将新语法转换为旧语法,以确保兼容性。

ECMAScript 是 JavaScript 的标准化版本,通过不断的发展和完善,提供了丰富的语言特性,使得 JavaScript 成为一种功能强大的编程语言。了解 ECMAScript 标准及其发展历程,有助于开发者更好地掌握 JavaScript 的最新特性和最佳实践。

猜你喜欢

转载自blog.csdn.net/speaking_me/article/details/143428626