为什么JS没有一个破坏性的新版本?是否有一些固有的语言设计,使得向后兼容成为必须?
更新
为什么JavaScript不能并行运行多个引擎?类似于.NET在同一台机器上运行2、3和4版本。
如果一个重大的变化发生,将会破坏大量现有的网站,这将使很多人非常生气 :)
<script>
标签可以执行类似的角色——想象一下:<script language="javascript2">
——只要浏览器支持正确。然而,人们不想写2个版本的脚本,因此...因此我们回到了起点 :-) - user166390<script language="javascript1.5">
。现在,“type = ...”属性取代了“language”。 - Stephen P向后兼容性很重要,因为有许多不同版本的浏览器在使用。
如果您将一种新的、不兼容的Javascript服务于旧版浏览器,它们会全部崩溃。
如果您发明了一种被现有浏览器认为不是Javascript的新语言,那么它就无法与大多数浏览器兼容。很少有用户愿意下载一个新浏览器来使用您的新语言。因此,无论这种新语言有多好,网页开发者必须继续编写兼容的Javascript以支持大多数用户。
许多人希望浏览器能够支持比当前Javascript更好的东西,但这并不会很快发生。所有浏览器和开发工具的制造商都必须支持这个新东西,并继续支持旧的Javascript。许多利益相关者认为成本大于收益,所以缓慢地演进Javascript似乎是唯一可行的解决方案。
惯性。
做一个破坏性的改变将会破坏太多的网站,没有浏览器供应商愿意处理所有的错误报告。
而且PHBs会反对针对新版本进行定位,为什么要让他们的开发人员为损坏和修复的语言编写javascript?他们的开发人员无论如何都必须为受损版本编写它,所以为什么要费劲地实现2个版本(从开发人员的角度看也很糟糕,因为现在他们必须更新、支持和调试2个不同的代码树)。
[1,]
的长度报告为2
。Google 也在尝试向前迈出这一大胆的步伐,以稍微更为理智的方式重新设计 JavaScript。这项努力被称为 Dart: http://www.dartlang.org/ 据我所知,Dart 主要使用了 JavaScript 的语法,减去了其中的一些怪异之处。除此之外,它还更适合虚拟机,因此可能会更快运行(当然,如果您将 Dart 编译为 JavaScript 并使用 JavaScript VM,则可以提供兼容性选项)。但是,任何强硬的 JavaScript 纳粹^W 爱好者都不会喜欢任何声称比 JavaScript 更好的东西。而对于我来说,它们还没有走得够远。特别是,它们仍然没有提供足够的“类路径”。