写点什么

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:002876

评论

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

Mac电脑网络检测工具箱Network Kit for Mac激活版

小玖_苹果Mac软件

Messari 2024 年行业总结及 2025 年趋势预测

TechubNews

DePIN

TikTok直播是否必须选择专线?能否自行搭建?

Ogcloud

海外直播专线 直播专线 tiktok直播 tiktok直播专线 tiktok直播网络

如何设计一个注册中心?以Zookeeper为例

EquatorCoco

分布式 云原生

深入理解Mybatis原理》MyBatis动态SQL原理

EquatorCoco

sql mybatis

SecureCRT & SecureFX 9.6.1 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

sysin

securecrt

Mac 磁盘清理与系统优化OS Cleaner Pro - Disk Cleaner激活版

小玖_苹果Mac软件

iZotope RX 11 for Mac(专业音频修复软件)v11.2.0激活版

理理

AI技术实现口语练习功能

北京木奇移动技术有限公司

AI技术 软件外包公司 口语学习

Navicat for MySQL Mac(数据库管理开发工具)v16.3.4汉化版

理理

o3 发布了,摔碎了码农的饭碗

不在线第一只蜗牛

架构

FonePaw Data Recovery for Mac(数据恢复)v3.7.0激活版

理理

coconutBattery Plus for Mac(电池质量检测工具)4.0.0 直装版

理理

接龙活动管理系统(源码+文档+部署+讲解)

深圳亥时科技

Mac上最好用的压缩解压软件 Keka中文破解版

理理

房产经纪人管理系统(源码+文档+部署+讲解)

深圳亥时科技

AI对开发过程的替代性

快乐非自愿限量之名

人工智能 AI

Mac电脑专业系统监控工具System Dashboard Pro for Mac激活版

小玖_苹果Mac软件

PDF Squeezer for Mac(强大的PDF文件压缩工具)v4.5.3免激活版

理理

分库分表 带来了哪些问题?

采菊东篱下

Java 编程

2025年金三银四春招Java后端面试最全攻略

采菊东篱下

java面试 编程、

终端SSH仿真工具 SecureCRT for mac永久激活版

理理

Red Giant Magic Bullet Looks for Mac(looks调色插件)v5.0.3激活版

理理

苹果电脑强大清理优化工具Ghost Buster Pro for Mac激活版

小玖_苹果Mac软件

【Mac生产力神器】Magnet Pro:智能分屏,高效工作新体验!

理理

【iPhone解锁神器】AnyMP4 iPhone Unlocker:一键解锁,轻松恢复

理理

网络分析与监控:阿里云拨测方案解密

阿里巴巴云原生

阿里云 云原生

乡村振兴数据平台(源码+文档+部署+讲解)

深圳亥时科技

国内“最强”具身智能创始团队,发布首个端到端RL具身模型

机器人头条

大模型 人形机器人 具身智能 机器人大脑

BOE(京东方)联手故宫再度打造沉浸式数字展 引领数字艺术文化新篇章

爱极客侠

远程操控新体验!Apple Remote Desktop让Mac管理更便捷、更高效!

理理

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