微信号:gh_bd8d6a989787

介绍:介绍各种前端技巧,帮助提高前端开发的速度,逐渐做到分分钟完成开发.

未来的JavaScript还缺少哪些特性?(2)

2019-04-08 08:30 web前端程序员

6. 各种小东西  

下面是我偶尔会遗漏的一些东西,但我并不认为它们像我前面提到的那么重要:

  • 链式异常:使您能够捕获错误,并对它包装附加信息,然后再次抛出错误。

  • 可组合正则表达式:

  • 为正则表达式转义文本(对于.replace()来说很重要):

  • 支持负索引的Array .prototype.get():

        

  • as-模式的匹配和解构(由Kat Marchán提出):

  • 检查对象的深度相等性(可能:使用断言选择性参数化,以支持自定义数据结构):

  • 枚举:将枚举添加到JavaScript的一个好处是,它将缩小与TypeScript的差距——TypeScript已经有枚举了。目前有两份提案草案(目前还未进入正式阶段)。一个来自Rick Waldron,另一个来自Ron Buckton。在这两个提案中,最简单的语法看起来像这样:


  • 可标记字符集合(tagged collection literals)(由Kat Marchan提案和撤回):允许您创建如下的映射和集合:

        

7. FAQ(常见问题): 未来的JavaScript  

7.1. JavaScript 会支持静态类型吗?  

不会很快!当前开发过程中静态类型(通过TypeScript或Flow)与纯JavaScript运行时之间的分离运行良好。因此,没有迫切需要改变任何事情的理由。

7.2. 为什么我们不能移除JavaScript的一些怪癖和过时的特性呢?  

web的一个关键要求是永远不要破坏向后兼容性:

  • 缺点是该语言有很多遗留特性。

  • 但好处大于坏处:大型代码库仍然是同构的;迁移到新版本很简单;引擎仍然较小(不需要支持多个版本);等等。

通过引入现有功能的更好版本,仍然有可能修复一些错误。

有关此主题的更多信息,请参阅 "JavaScript for impatient programmers"(急躁程序员的JavaScript书)。

8. 关于语言设计的思考  

作为一个语言设计师,无论您做什么,您总会让一些人快乐,一些人悲伤。因此,设计未来JavaScript特性的主要挑战不是让每个人都满意,而是尽可能保持语言的一致性。

然而,对于“一致性”的含义也存在分歧。因此,我们可能能做的最好的事情就是建立一个一致的“风格”,由一小群人(最多三个人)构思和实施。这并不妨碍它们得到其他许多人的建议和帮助,但他们应该确定总体基调。

引用 Fred Brooks的一段话:

稍微回顾一下您就会发现,尽管许多优秀的、有用的软件系统都是作为多部分项目的一部分由委员会设计并构建的,但是那些能够激励热情的粉丝的软件系统都是由个或几个设计头脑(伟大的设计师)设计的产品

这些核心设计人员的一个重要职责就是对特性说“不”,以防止JavaScript变得太大。

他们还需要一个强大的支持系统,因为语言设计师往往会遭受相当大的侮辱(因为人们很上心,且不喜欢听到“不”)。最近的一个例子是Guido van Rossum因为受到侮辱而辞去了Python语言首席设计师的职位。

8.1. 其他的想法

这些想法也有助于设计和编写JavaScript文档:

  • 创建一个路线图,描述JavaScript未来的远景。这样的路线图可以讲述一个故事,并将许多单独的部分连接成一个连贯的整体。我知道的最后一个路线图是Brendan Eich的《我梦想的和谐》(Harmony of My Dreams)。

  • 记录设计原理。现在,ECMAScript规范记录了事情是如何工作 的,而不是为什么。一个例子: 可枚举性的目的是什么?

  • 一个权威的解释器。规范的半正式部分几乎已经可以运行了。如果能像编程语言一样来对待和运行它们,那就太好了。(您可能需要一个约定来从非规范性助手函数中区分规范代码。)

致谢:感谢Daniel Ehrenberg在这篇博客上的反馈!

英文原文:http://2ality.com/2019/01/future-js.html 
译者:一瞬
 
web前端程序员 更多文章 预加载、预取和其他<link>标记 JavaScript生态系统总览(1) 我并不讨厌箭头函数 你不需要jQuery 来,写微信小程序,赚3240元酬金
猜您喜欢 2017年,大数据产业风将吹向哪里? 如何从零构建实时的个性化推荐系统? 形势正在起变化:做“商业帝国”梦的企业,注定崩塌! 干货丨使用angular-cli工具管理基于angular的工程 iOS性能测试系列(五)案例优化之Facebook优化摘要