0

JavaScript 是专门为浏览器设计的。它不是从架子上拉下来的。那么使其成为脚本语言而不是编译语言的原因是什么?

随着 WebAssembly 的引入,证明了用于 Web 的编译语言是可能的。但为什么一开始就不是这样设计的呢?

在 Web 领域,脚本语言比编译语言有什么好处?

编译语言的支持者认为 JavaScript 是一种糟糕的语言,不应该被采用,所以我想知道,是让 JavaScript 脚本化成为一种任意选择,还是吸引那些无法处理“真实”的开发人员的选择像C这样的语言?还是其他什么原因?


是什么阻止了类似 WebAssebly 的系统一开始就在 Web 上实施和采用?

4

1 回答 1

1

JavaScript 被开发为

  • 轻的。一台 Windows 95 PC 可能有 0.002 gig 的内存 (2MB) 并运行 0.06 GHz (60Mhz) 的快速奔腾处理器。这样的设置没有资源来加载和执行 Microsoft C++,同时执行其他任何操作。内存分页超时工作。
  • 比 Java 快。在早期的 Netscape 浏览器中启动 Java 引擎需要很长时间,因此使用 Java 访问网站需要在第一次遇到 Java 小程序时等待很长时间才能加载插件。仅仅因为这个原因,Java 客户端的使用从未真正占据一席之地。
  • 易于学习和使用。这可能有点过火了,但是
    • 支持未声明的变量(不是最好的主意),
    • 所有变量都像一个 Basic Variant 变量——无需声明或管理变量类型。
    • 没有指针。好吧,它们被称为“对象”变量,但不需要处理内存地址、结构或联合数据类型或类。
    • 使用熟悉 C 系列语言的程序员熟悉的语法。
    • 定义并引入了一个带有对象的环境,并内置了对全局对象的访问,以便在网页中进行编程。
    • 有一些错误,比如为 null 的数据类型返回“对象”,并声称对象是类,但没关系。
可以说 JavaScript 是一种高级语言,特别是与 C 相比……许多人都知道它是一种“高级汇编语言”。

最后,学习和使用一些最小的 JavaScript 来影响网页具有成本效益 - 引入时就是它的全部目的。

其他选择可以相当简单地排除:可能没有考虑诸如 Pascal 之类的高级语言,Java 太慢,C 太低级,Visual Basic for Applications (vba) 是 Microsoft Corporation 的专有产品。

TLDR;

它被设计成看起来像开发人员已经知道的东西,并且在检查时不会花费太多精力。Netscape 希望开发人员使用网页“编程”来鼓励使用他们的浏览器。其他事实被告知,包括使用“Java”作为语言名称的一部分。


更多

正如 MDN WebAssembly 所述,它不是 JavaScript 的替代品,但在浏览器上下文中确实支持对 JavaScript 函数包装器的调用。

1995 年,在 Netscape navigator 的 2.02 beta 版本中以“Livescript”的名义引入了 JavaScript 的初步版本。它引入了<script>标签并将 Netsape 浏览器内部的部分内容暴露给页面脚本 - 主要是为了支持将 HTML 注入页面源和处理鼠标以及由表单控件和页面导航生成的键盘事件。

在这个时候(一开始),既没有需求也没有 Web 生态系统适合 WebAssembly:XMLHttpRequest、DOM、CSSOM、WebGL、IndexedDB、Web Audio API 等的接口距离开发还有几年或几十年的时间,实施和标准化。Netscape 最初是使用 Brendan Eich 在十天内编写的脚本引擎来创造对 Web 脚本的需求。

于 2020-06-13T03:19:19.733 回答