首页 > 其他分享 >ECMAScript 是什么?

ECMAScript 是什么?

时间:2023-02-07 11:01:13浏览次数:39  
标签:异步 什么 Object ECMAScript 模块 字符串 prototype

ECMAScript 是什么

简介

  • Ecma 标准定义了 ECMAScript 语言
  • ECMAScript 基于多种原始技术,最著名的是 JavaScript (Netscape) 和 JScript (Microsoft)
  • ECMAScript 以嵌入 Web 浏览器中的语言而闻名,但也被广泛用于服务器和嵌入式应用程序

版本迭代

  • 第一版于 1997 年 6 月由 Ecma 大会通过

  • 第二版较之第一版更改本质上是编辑性

  • 第三版引入

    • 强大的正则表达式
    • 更好的字符串处理
    • 新的控制语句
    • try/catch 异常处理
    • 更严格的错误定义
    • 数字输出的格式
    • 对未来语言增长预期的微小变化

    此时,它已成为几乎所有 Web 浏览器都支持的编程语言

  • 第四版没有正式发布,但其中的一些内容被纳入了第六版

  • 第五版编纂了在浏览器实现中变得普遍的语言规范的实际解释,并增加了对自第三版发布以来出现的新功能的支持

    • 访问器属性
    • 对象的反射创建和检查
    • 属性特性的程序控制
    • 额外的数组操作函数
    • 对 JSON 对象编码格式的支持
    • 提供增强的错误检查和程序安全性的严格模式
  • 第六版的重点,于 2015 年 6 月由大会通过

    自 1999 年第三版出版以来,在此之前进行了大量的实验和语言增强设计工作。从非常真实的意义上说,第六版的完成是十五年努力的结晶

    • 此版本的目标包括为大型应用程序、库创建以及使用 ECMAScript 作为其他语言的编译目标提供更好的支持
    • 语法改进模块、类声明、词法块范围、迭代器和生成器、异步编程的承诺、解构模式、适当的尾调用
    • 扩展了 ECMAScript 内置库以支持额外的数据抽象,包括映射、集合、和二进制数值数组,以及对字符串和正则表达式中的 Unicode 增补字符的额外支持

    第六版为常规的、渐进的语言和库增强功能奠定了基础

  • ECMAScript 2016

    • 提交了数百个拉取请求和问题,代表了数以千计的错误修复、编辑修复和其他改进
    • ES2016 还包括对新指数运算符的支持,并为 Array.prototype 添加了一个新方法 includes

    核心目的是对 ES2015 版本大更的补正

  • ECMAScript 2017

    • 引入了异步函数、共享内存、原子一致性
    • 以及较小的语言和库增强功能、错误修复和编辑更新
    • Object 上的新静态方法:Object.values、Object.entries、Object.getOwnPropertyDescriptors

    目的在于改善异步编程体验

  • ECMAScript 2018 通过 AsyncIterator 协议和异步生成器引入了对异步迭代的支持

    • 四个新的正则表达式功能:dotAll 标志、命名捕获组、Unicode 属性转义、后视断言
    • 最后对象新属性:rest、spread
  • ECMAScript 2019

    引入了一些新的内置函数

    • Array.prototype 上的 flat 和 flatMap 用于压平数组
    • Object.fromEntries 用于将 Object.entries 的返回值直接转换为新的 Object
    • String.prototype 上的 trimStart 和 trimEnd 作为广泛实现但非标准的 String.prototype.trimLeft 和 trimRight 内置函数的更好命名替代

    更新的语法包括

    • 可选的catch绑定参数
    • 允许字符串文本中的 U+2028 (LINE SEPARATOR) 和 U+2029 (PARAGRAPH SEPARATOR) 与 JSON 对齐

    其他更新包括要求 Array.prototype.sort 是一种稳定的排序,要求 JSON.stringify 无论输入如何都返回格式良好的 UTF-8,并通过要求返回相应的原始源文本或标准占位符来澄清 Function.prototype.toString

  • ECMAScript 2020 第十一版

    引入了

    • 字符串的 matchAll 方法,为全局正则表达式生成的所有匹配对象生成迭代器
    • import(): 一种使用动态说明符异步导入模块的语法
    • BigInt: 一个用于处理任意精度整数的新数字原语
    • Promise.allSettled: 一个不短路的新 Promise 组合子
    • globalThis: 获取全局 this 值的通用方法
    • 模块专用导出语法(ns 是别名):export * as ns from 'module'
    • import.meta,模块中可用的主机填充对象,可能包含模块的上下文信息
    • 添加两个新的语法特性以改进对“零”值(null 或 undefined)的处理:零合并,一个值选择运算符
    • 可选的链接,一种属性访问和函数调用运算符,如果要访问/调用的值为空,则会短路
  • ECMAScript 2021

    引入

    • 字符串的replaceAll方法
    • Promise.any: 一个 Promise 组合子,当输入值满足时短路
    • AggregateError: 一种新的错误类型,一次表示多个错误
    • 逻辑赋值运算符: ??=, &&=, ||=
    • WeakRef: 用于引用目标对象而不将其保留在垃圾收集中
    • FinalizationRegistry: 用于管理在垃圾收集目标对象时执行的清理操作的注册和注销
    • 数字文本的分隔符 (1_000)
    • Array.prototype.sort: 排序更加精确,减少了导致实现定义排序顺序的案例数量
  • ECMAScript 2022,第13版

    引入

    • await,允许在模块的顶级使用关键字
    • 新的类元素:公共和私有实例字段、公共和私有静态字段、私有实例方法和访问器、私有静态方法和访问程序
    • 类内的静态块,以执行每个类的评估初始化
    • 语法中的 #x in obj,用于测试对象上是否存在私有字段
    • 正则表达式通过 /d 标志匹配索引,该标志为匹配的子字符串提供开始和结束索引
    • Error 对象上的 cause 属性,可用于记录错误中的因果链
    • 字符串、数组、TypedArrays 的 at 方法,允许相对索引
    • Object.hasOwn: 这是 Object.prototype.hasOwnProperty 的一个方便替代品

标签:异步,什么,Object,ECMAScript,模块,字符串,prototype
From: https://www.cnblogs.com/shadow-/p/17097672.html

相关文章

  • 什么是WMS系统?
    什么是WMS系统?  WarehouseManagementSystem简称WMS,也就是我们经常讲到的仓储管理系统(仓库管理系统)。从狭义上来讲它是一个实时的计算机软件系统,它能够按照运作......
  • 辐射传感器是什么,包含那些分类及应用
    辐射传感器又称总辐射传感器、辐射表辐射传感器,辐射传感器包括总辐射传感器、热辐射传感器、紫外线辐射传感器、辐射监测传感器、太阳辐射传感器、净辐射传感器、光合有效辐......
  • OKR:你到底在为什么而努力工作!
    组织中的每个层面,都有自身的定位,应发挥各自的价值。它们的O,绝非仅仅上级OKR一个来源,还有自身的工作策略、职责定位等来源。一说到上下级O,很多企业习惯性地想到了层层分解......
  • 谷歌seo是做什么?谷歌seo是指什么意思
    本文主要分享关于谷歌seo的一些框架知识,让你从大的层面去认识谷歌seo。本文由光算创作,有可能会被修改和剽窃,我们佛系对待这种行为吧。谷歌SEO,全称Google搜索引擎优化,是一种......
  • 为什么要使用computed而不是data获取vuex中的state
    最近在学习vuex时,照着官网最基本的Vuex记数应用示例敲的时候遇到了这样一个问题想实现的效果:[img]http://dl2.iteye.com/upload/attachment/0130......
  • Hive中Order by和Sort by的区别是什么?
    Hive基于HADOOP来执行分布式程序的,和普通单机程序不同的一个特点就是最终的数据会产生多个子文件,每个reducer节点都会处理partition给自己的那份数据产生结果文件,这导致了在......
  • 有了事务为什么还需要乐观锁和悲观锁
    ​​​​​为什么有了事务这东西,还需要乐观锁悲观锁?事务是粗粒度的概念、乐观锁悲观锁可以更细粒度的控制;比如抢票,假设余票只有1张;隔离级别可以保证事务A和事务B不能读到对......
  • 什么是传奇服务端,传奇版本和传奇客户端,他们之间有什么关系,传奇开区要下载什么?
    最近,又有很多的新手朋友加入了我们的群,也就是加入了我们的传奇大家庭,但是随之而来的就是很多的新手问题,比如今天我们要聊的这几个问题,什么是传奇服务端,传奇版本!这几个问题就......
  • 程序员三十岁之后要考虑什么?
          程序员三十岁之后要考虑什么?    周六受邀参加了触控科技CocoaChina开发者社区举办的"移动游戏人才培养和创业机会”的沙龙。其间被问到一个问题:“......
  • 01 什么是计算机?
    一、图灵机的概念:二、冯诺依曼模型:1、程序和数据都是以0,1的形式存储在计算机中。......