“世界上只有两种语言:一种被吐槽,另一种不用。”-BjarneStroustrup,C++语言之父并不是每个人都喜欢JavaScript。时不时有人抱怨JavaScript应该被另一种语言取代。原因:JavaScript中有很多地方非常莫名其妙,早该修复了。由于开发人员没有修复这些地方,人们认为JavaScript是一门糟糕的语言,根本无法修复。既然如此,就应该换成另一种语言,最好是抱怨者最喜欢的语言。但事实真的如此吗?我们是如何到达现在的位置的?JavaScript几乎不是一种完美的语言,因为它确实有一些奇怪之处。在短短十天内,开发人员设计了JavaScript并使其更像Java,他们必须承受后果。但没有一种语言是完美的,自ES6以来,JavaScript已经取得了长足的进步,并且还在不断改进。它已经从一种仅用于网页动画的“玩具语言”,发展成为一种严格意义上的编程语言,JavaScript现在被用于各种大型复杂的网络应用程序中。JavaScript几乎无处不在,是目前世界上使用最广泛的编程语言。那么为什么有的开发商还在叫嚣要换掉呢?许多了解该语言的人对JavaScript的抱怨源于他们的无知。this关键字、原型继承和不可变性是JavaScript中前三大混淆来源。如果开发人员习惯了另一种语言,我可以理解。再一次,我能理解这造成的困惑和愤怒。但这些并非不可逾越。如果您愿意学习,JavaScript并不是那么高深莫测。虽然开发人员认为将JavaScript换成另一种语言可以一劳永逸地解决问题是可以理解的,但这既不现实也不是真正的解决方案。“不破坏Web”原则JavaScript、HTML和CSS的总体设计原则是新功能永远不会破坏现有网站。这实质上将JavaScript变成了一种仅可添加的编程语言:只要不破坏现有网站,就可以添加功能,并且新添加的功能可能永远不会更改或删除现有功能。这一原则确保现有网站永远不会崩溃,即使它们是几十年前创建的,第39号技术专家委员会(TC39)竭尽全力维护这一原则。虽然这是一件好事,但它确实给JavaScript带来了负担,因为特征只能添加到它而不能更改。因此,虽然JavaScript的混乱方面(例如this关键字)理论上可以修复,但它可能会破坏现有的网站,这些网站在修复之前可以完美运行。显然这是不可接受的,因为它违反了“不要破坏网络”的原则。使用另一种语言不是解决方案用一种新的语言替换JavaScript理论上是可以的,但在技术上和逻辑上都是棘手的,而且没完没了,并非不可能。但是该语言还需要遵循“不要破坏网络”的原则,这基本上也将语言变成了一种附加语言。可能已经预料到对这种语言的热情会下降,很快就会听到同样的要求更换它的呼声。这个原则约束了JavaScript,限制了它的进化方式,这将适用于任何需要遵守这个原则的语言。这造就了JavaScript的今天,没有任何语言可以在不受此原则约束的情况下取代它。在过去的20多年里,JavaScript保持着前所未有的向后兼容性,这实际上是一个巨大的成就。JavaScript为当今网络的发展做出了巨大贡献,应该为它鼓掌,而不是讨厌它。从头开始?希望开发人员现在已经意识到用另一种语言完全替代JavaScript是不可能的。但是如果你真的不想学JavaScript,你也可以通过WebAssembly和其他十几种编译成JavaScript的语言来学习。笔者对TypeScript印象深刻,因为它可以为JavaScript和PureScript添加静态类型特性,就像浏览器中的Haskell,可以进行成熟的函数式编程。但额外的编辑步骤一如既往地使学习曲线复杂化,问题就来了:这是否值得。目前我推荐使用TypeScript,因为它是JavaScript的超集,两者非常相似。TypeScript也在积极发展并拥有庞大的社区。学习它需要时间,你可以花时间学好JavaScript。它不是那么高深莫测和难以学习,一旦你掌握了它的怪异之处,它就是一种非常强大和多才多艺的语言。它并非完美无缺,但却是必不可少的。话虽如此,没有一种语言是完美的。这是你的选择。
