惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

V
V2EX
Cisco Talos Blog
Cisco Talos Blog
MongoDB | Blog
MongoDB | Blog
IT之家
IT之家
N
News and Events Feed by Topic
博客园 - 叶小钗
Help Net Security
Help Net Security
美团技术团队
Attack and Defense Labs
Attack and Defense Labs
雷峰网
雷峰网
S
Security @ Cisco Blogs
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
AI
AI
Hacker News: Ask HN
Hacker News: Ask HN
T
The Blog of Author Tim Ferriss
Security Latest
Security Latest
Last Week in AI
Last Week in AI
S
Secure Thoughts
Simon Willison's Weblog
Simon Willison's Weblog
TaoSecurity Blog
TaoSecurity Blog
N
News and Events Feed by Topic
A
Arctic Wolf
Y
Y Combinator Blog
MyScale Blog
MyScale Blog
Cyberwarzone
Cyberwarzone
酷 壳 – CoolShell
酷 壳 – CoolShell
S
SegmentFault 最新的问题
罗磊的独立博客
Vercel News
Vercel News
D
DataBreaches.Net
博客园 - 聂微东
P
Palo Alto Networks Blog
N
News | PayPal Newsroom
GbyAI
GbyAI
B
Blog
A
About on SuperTechFans
PCI Perspectives
PCI Perspectives
S
Schneier on Security
Apple Machine Learning Research
Apple Machine Learning Research
I
InfoQ
The GitHub Blog
The GitHub Blog
P
Privacy International News Feed
Blog — PlanetScale
Blog — PlanetScale
博客园_首页
T
The Exploit Database - CXSecurity.com
V
Vulnerabilities – Threatpost
aimingoo的专栏
aimingoo的专栏
Google DeepMind News
Google DeepMind News

Xiaobin's Notes

Mac本地快速部署DeepSeek Electron的原理 如何让大语言模型输出JSON格式 webstorm 的 cpu 占用高 修改Joplin主题样式 新一代包管理器 PNPM React useEffect() Hook Vue 2.x 使用高德地图JS API 2.0加载起点终点路径轨迹 家庭用电插座 MacOS 14.4 引发Java 应用崩溃 重定向广告 Pyenv工具 ElasticSearch集群原理 ElasticSearch集群节点 Elasticsearch Mapping 参数 Elasticsearch元数据 Elasticsearch的数据类型 Go语言的向后兼容和toolchain规则 Go 1.21 新增特性
ECMAScript 历代版本
xbl · 2024-06-20 · via Xiaobin's Notes

欧洲计算机制造商协会(European Computer Manufacturers Association)或简称 ECMA. ECMA走向全球后,在1994 年更名为:Ecma International。其商标“ECMA”由于历史原因被保留了下来,沿用至今。
ECMA-262是一种规范(官网中可以查到各个版本的PDF提案),自然会有满足这种规范的具体的语言被创造出来。最著名的就是JavaScript
(现在商标属于Oracle),在1995年由Netscape公司的Brendan Eich,在Netscape导航者浏览器上首次设计实现而成。因为Netscape与Sun合作,Netscape管理层希望它外观看起来像Java,因此取名为JavaScript。但实际上它的语法风格与Self及Scheme较为接近。其设计思路如下:

  • 借鉴 C 语言的基本语法。
  • 借鉴 Java 语言的数据类型和内存管理。
  • 借鉴 Scheme 语言,将函数提升到“第一等公民”(first class)的地位。
  • 借鉴 Self 语言,使用基于原型(prototype)的继承机制。

ECMAScript 各版本

  • ECMAScript 1.0 (1997):第一个正式标准,规范化了 JavaScript 的核心语言。

  • ECMAScript 3.0 (1999):该版本为语言带来了正则表达式、try/catch 异常处理以及更多的核心改进。

  • ECMAScript 5.0 (2009):引入了 strict mode(严格模式),并添加了许多数组方法(如 forEach、map、filter 等)。这次更新被认为是 JavaScript 现代化的重要一步。

  • ECMAScript 6 (ES2015):这是 ECMAScript 发展中的里程碑式版本,增加了 let 和 const 变量声明、类和模块系统、箭头函数、解构赋值、模板字符串、Promise、Symbol、迭代器和生成器等新特性。

  • ECMAScript 7 (ES2016):主要是增加了两个新特性:Array.prototype.include和取幂运算符。

  • ECMAScript 8 (ES2017):主要变化包括:Object.values/Object.entries、字符串填充、Object.getOwnPropertyDescriptor、尾随逗号、异步函数、共享内存和原子,等。

  • ECMAScript 9 (ES2018):ECMAScript 2018 主要包含内容:

    • 异步迭代器:原生支持在 JavaScript 中对异步获取的数据做迭代。
    • Object Rest/Spread Properties
    • Promise.prototype.finally
    • Template Literal(模板字面量):取消 Escape-Sequenzen 限制
    • 正则表达式:
      • 支持 s (dotAll) 模式
      • Unicode 属性转义(Property Escape)
      • 支持后行断言(Lookbehind Assertions)
      • 命名捕获组(named capture group)
  • ECMAScript 10 (ES2019):

    • Array.prototype.flat() 和 Array.prototype.flatMap()
    • Object.fromEntries()
    • String.prototype.trimStart() 和 String.prototype.trimEnd()
    • Array.prototype.sort() 改进
    • Symbol.prototype.description
    • Function.prototype.toString() 的改进
    • JSON.prototype.{stringify, parse} 的改进
      • JSON.stringify() 现在会忽略 undefined、symbol、函数 等值。
      • JSON.parse() 对 NaN、Infinity 和 -Infinity 的处理变得更加严格,报错而不是返回这些值。
    • RegExp.prototype.flags. RegExp.prototype.flags 属性返回正则表达式的标志(如 g, i, m 等),这是一个只读的属性,简化了获取正则标志的方式。
    • Optional Catch Binding (可选的 catch 绑定). 在 ES10 中,try…catch 语句中的 catch 变量现在是可选的,可以不指定错误对象变量。
    • Well-formed JSON.stringify() 的改进. ES10 对 JSON.stringify() 进行了改进,确保序列化结果是符合 JSON 格式的,修复了一些潜在的问题。
  • ECMAScript 11 (ES2020):

    • Optional Chaining(可选链操作符 ?.)
    • Nullish Coalescing Operator(空值合并操作符 ??)
    • BigInt
    • Promise.allSettled()
    • globalThis
    • String.prototype.matchAll()
    • Array.prototype.sort() 的稳定性
    • 模块化的顶层 await
    • Import.meta
    • 模块内的顶层 await 和新的 import 机制