2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

ECMAScript 2016 新特性: Array.prototype.includes 和幂运算符

  • 2016-02-21
  • 本文字数:1567 字

    阅读完需:约 5 分钟

ECMAScript 2016 只新增了两个特性:Array.prototype.includes 和幂运算符 (Exponentiation Operator)。Async 函数需要等到明年才能进入标准。

ECMAScript 标准制定过程包含四个阶段:提议 (Proposal)、草案 (Draft)、候选 (Candidate)、完成 (Finished)。每个新特性在进入标准前都必须走完这四个阶段。因此,只有进入最后一个阶段的特性能被包含在下一版本的 JavaScript。虽然有 22 个处于不同阶段的特性,仅有 2 个进入完成 (Finished) 阶段: Array.prototype.includes 幂运算符(Exponentiation Operator)

Array.prototype.includes

根据提案,下面的代码展示了如何使用这一新特性:

复制代码
assert([1, 2, 3].includes(2) === true);
assert([1, 2, 3].includes(4) === false);
assert([1, 2, NaN].includes(NaN) === true);
assert([1, 2, -0].includes(+0) === true);
assert([1, 2, +0].includes(-0) === true);
assert(["a", "b", "c"].includes("a") === true);
assert(["a", "b", "c"].includes("a", 1) === false);

最初提议的语法是 Array.prototype.contains,技术委员会把"contains"替换为"includes",因为前者不是"网站兼容(web-compatible)"的,会导致大量网站崩溃。

幂运算符(Exponentiation Operator)

幂运算符的语法是:

Operator: var1 ** var2一个简单的例子:

let cubed = 2 ** 3; // 2*2*2比起 2015 年发布的 ES 2015 (ES6),今年发布的新标准相当少。而再早的一个版本 ES 5 是在 2009 年发布的。这是因为 TC39 决定从 2015 年起每年发布一个新版本,而不是隔 5、6 年才发布一次大的更新。新特性进入最后阶段的一个条件是有至少 2 个兼容的实现并通过测试,而这正是其它特性没能进入这一版标准的主要原因。谈及今年进入标准的两个新特性,ECMAScript 审稿人 Brian Terlson( @bterlson ) 告诉 InfoQ:

ChakraCore 已经实现了 Array.prototype.includes(我们很快会采用实验模式,详见 https://github.com/Microsoft/ChakraCore/issues/23 )。我们也在 ChakraCore 上对幂运算符进行了实验性实现。SpiderMonkey 和 V8 都实现了 Array.prototype.includes,此外 SpiderMonkey 也实现了幂运算符。因此根据标准制定过程,这两个特性都可以进入新标准。由于这些特性涉及的范围比较小,比较容易获得实现反馈。

在某些情况下,TC39 委员会可以要求新特性必须有超过 2 个实现才能进入最后阶段。Async 函数遇到的情况正是如此。虽然 Async 函数有很高的人气,但目前仍处在候选 (Candidate) 阶段。Terlson 解释说:

Async 函数确实不在 ES2016 标准里。TC39 过程并没有对一个新特性何时才算拥有足够多的实现给出明确的要求(标准制定过程文档详见: https://tc39.github.io/process-document/ ),所以这只是针对具体特性做出的判断。Async 函数有超过 2 个的稳定实现(在 Chakra、TypeScript 和 Babel 上都有实现)。但对于 Async 函数这样的新特性,技术委员会想确保没有浏览器实现问题(如网站崩溃、性能问题等),最好在 Async 函数进入 ECMAScript 标准前可以有在其他浏览器引擎上的稳定实现。

另外一些进入候选 (Candidate) 阶段的特性有: SIMD.JS ——SIMD 的 API, Object.values/Object.entries 字符串填充(String padding) 函数定义和调用时参数列表最后面的逗号,以及 Object.getOwnPropertyDescriptors 。Terlson 表示“很多在第三阶段的特性很可能会进入 ES2017 标准,但也不能完全保证”。

查看英文原文: ECMAScript 2016: Array.prototype.includes and the Exponentiation Operator


感谢夏雪对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群(已满),InfoQ 读者交流群(#2))。

2016-02-21 18:003289

评论

发布
暂无评论
发现更多内容

企业网络管理复杂?SD-WAN来解决

Ogcloud

SD-WAN 企业组网 SD-WAN组网 SD-WAN厂商 SD-WAN厂家

Tivoli国产化替代:告别单体架构,嘉为蓝鲸全栈智能观测中心引领云原生监控新变革

嘉为蓝鲸

AIOPS 智能运维 可观测 全栈智能观测中心

《一文讲透》第7期:KWDB 巧用标签与索引优化查询性能

KaiwuDB

数据库· #程序员

如何优雅地处理 API 版本控制?

数据追梦人

面向企业级应用的React路由管理体系:react-router-manage实践

shinpei

前端 React

CAD面域功能作用

极客天地

CAD怎么实现图形遮挡效果

极客天地

CAD怎么将图形移动到坐标原点

极客天地

伊登软件与华为云签订合作协议,共建企业应用+AI新范式

极客天地

使用VSCode连接金仓数据库KingbaseES

金仓技术

数据库· KingbaseES 金仓数据库

AIoT 智变浪潮演讲实录 | 刘浩然:让硬件会思考:边缘大模型网关助力硬件智能革新

火山引擎边缘云

硬件 大模型 AI 大底座 边缘智能 大模型工具

OpsPilot 揭秘 RAG 预处理优化:文档提取精度提升 30%,分块策略深度拆解

嘉为蓝鲸

智能运维 知识库 #WeOps

ITSM运营:服务请求管理步步进阶

嘉为蓝鲸

AIOPS ITSM 智能运维

【Windows】如何在任意文件夹中右键打开cmd终端

知识浅谈

cmd window 快捷方式

一款安全好用的企业即时通讯平台,支持统一门户

BeeWorks

即时通讯IM 私有化部署 企业级应用

支持纯内网使用,企业即时通讯平台推荐!

BeeWorks

即时通讯 IM 私有化部署 企业级应用 局域网视频软件

嘉为蓝鲸 平台V5.4 :云原生底座+安全效能双引擎,重塑企业数字化转型基座

嘉为蓝鲸

智能运维 产品发布 研运一体化

DeepSeek 谈运维:AI 重塑审批流,打造 IT 运维高效工作流

嘉为蓝鲸

AIOPS 智能运维 DeepSeek

《Operating System Concepts》阅读笔记:p636-p666

codists

操作系统

09.接口vs抽象类比较

杨充

谷歌发布 Agent SDK,可跨平台开发语音智能体;ViiTor AI 4.0 发布:3 秒样本情感声音克隆,TTS 模型开源

声网

iVX:让开发者能「一键开挂」

代码制造者

无代码开发

CAD怎么实现XY不同比缩放

极客天地

什么是 Redis?为什么你应该关心它?

数据追梦人

手把手教你安装部署金仓数据库 KingbaseES

金仓技术

数据库· KingbaseES 金仓数据库

可视化编程范式与未来图景

代码制造者

可视化编程

AI超新星集体爆发!一文读懂Midjourney V7、LLaMa 4和DreamActor-M1如何改变世界

Seachal

降本提效双丰收!嘉为蓝鲸DevOps研发效能管理平台 V7.1 春季首发,AI 赋能研运全链路

嘉为蓝鲸

智能运维 降本增效 产品发布 #DevOps

多账号运营必备:OgPhone云手机功能分享

Ogcloud

云手机 tiktok运营 社媒运营 海外社媒运营 矩阵运营

当 MCP 遇上 Serverless,AI 时代的最佳搭档

阿里巴巴云原生

阿里云 Serverless 云原生

ECMAScript 2016新特性: Array.prototype.includes和幂运算符_JavaScript_Abel Avram_InfoQ精选文章