ECMAScript 更新和实现周期

ECMAScript 更新和实现周期

ECMAScript 是JavaScript的规范,它有ES更新的形式。我们中的大多数人都熟悉ES6的更新,因为它带来了我们所知道的大多数现代JavaScript特性。ES6更新如此之大的部分原因是它比ES5更新出来早了6年。

ES6改变了JavaScript的更新方式,不再是偶尔更新一次,而是改为每年更新一次,这就是为什么这些更新的名称大部分人都使用年份来表示ES更新的原因。这些更新实际上并没有更新语言本身,所有这些更新所做的都是更新ECMAScript。ECMAScript基本上描述了JavaScript应该如何工作和运行。然后由浏览器来实施这些更新和更改。这就是为什么有时候一个JavaScript官方公告和发布的功能在浏览器上仍然不支持它的原因,因为它们可能尚未实现此功能,反之亦然。

TC39流程 定义了一个功能从提议到实际被浏览器实现的过程。它经过多个不同的阶段。

对语言的更改是通过一个过程来开发的,该过程为从想法演变为具有接收测试和多个实现的完整规范功能提供了指导方针。一共有五个阶段:一个雏形阶段和四个“成熟度”阶段。 TC39委员会必须批准每个阶段的接受。

ECMAScript 更新和实现周期

这里是一些最有前途的提案

类静态初始化块: 这个提案目前处于过程的第四阶段。类静态块提供了在类定义评估期间进行额外静态初始化的机制。在类体内声明块允许您编写在类设置时间运行并设置静态字段的代码。它允许我们灵活访问私有字段。

注意: 截至目前,Safari、IE或Opera尚未实现此功能,并且全局使用率为74.14%。

语法:

class C {
     static {
           // Statements
     }
}

让我们看下面的示例:

Javascript

class GFG{ 
    static #dateNow = new Date() 
    static time 
    static{ 
        GFG.time = GFG.#dateNow.toISOString() 
    } 
} 
GFG.time

输出:

‘2022-07-25T20:30:15.558Z’ 

私有字段的人体工学品牌检查: 此提案当前处于过程的第四阶段。为了检查一个对象是否有一个私有字段,如果对象没有一个私有字段,我们可以有一些回退行为,甚至可能是抛出一个自定义异常。这样我们就可以测试一个私有字段是否存在于某个类中。我们可以使用try/catch块来解决这个问题,但这样做不太直观:

JavaScript

class GFG {
      #code; 
  
      static isGFG(obj) { 
        try { 
             obj.#code; 
              return true; 
        } catch { 
              return false; 
        } 
      } 
}

输出:

undefined

这个问题可以通过使用 “in” 关键词来解决,就像这样:

Javascript

class GFG {
    #code 
     isGFG(gfg){ 
        return #code in gfg; 
     } 
}

输出:

undefined

RegExp匹配索引: 这使我们能够找到在RegExp子字符串上发生的任何匹配的偏移量。简单来说,它允许我们找到RegExp子字符串中每个匹配的起始和结束点的位置。结果指向输入字符串。

让我们看一下下面的示例 编号分组

Javascript

const match = /(e+)/d.exec('geeks'); 
match.indices[1];

输出:

(2) [1, 3]

让我们来看下面的示例 命名组

Javascript

const match = /(?<gs>g+)(?<es>e+)/d.exec('ggggeeks'); 
  
match.indices.groups.gs; 
match.indices.groups.es;

输出:

(2) [4, 6]

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程