为什么JavaScript被称为"脚本语言"?

Won*_*ing 24 javascript scripting

正如标题所说,我想知道JavaScript被称为"脚本语言"的确切原因?

我的理解是因为JavaScript只是由浏览器解释(而不是编译).如我错了请纠正我.

但如果没有编译,那怎么回事0 == ''呢?编译器是否强制执行值,还是JavaScript引擎......?我有点困惑.

vic*_*ugo 36

我认为维基百科的前两句很清楚:

脚本语言,脚本语言或扩展语言是一种编程语言,允许对单个或多个软件应用程序进行某些控制.为脚本目的选择的语言通常比宿主应用程序使用的语言高得多......

在这种情况下,应用程序是浏览器.关于编译:

脚本通常(但不总是)从源代码或"半编译"解释为解释的字节码,与它们关联的应用程序不同,传统上编译为运行它们的系统的本机机器代码

关于0等于'',强制它不一定是由编译器实现的; 它是运行时的JavaScript引擎.

我很遗憾从维基百科那里拿走了所有东西,但它很清楚,我把它引用了

PS:我觉得值得贴这个:

许多人认为"脚本"语言比在脚本场景中没有普及的语言更差或者有些不同.具有讽刺意味的是,由于其质量和多功能性,这些相同的语言被精心选择用于编写脚本.

  • 在Javascript ==中,如果它们不相等,则尝试将RHS的类型转换为左侧.因此''== 0为假,但0 ==''为真.同样是假的=='0'是真的.最好使用===和!== (3认同)

Sas*_*gov 10

你是部分正确的.脚本语言基本上是一种不支持的语言; 它"脚本"另一个应用程序(在这种情况下,浏览器).我认为你所想的是一种解释性语言.本质上意味着它不是编译的(至少不是传统意义上的),它是从源代码中"解释"的.您的示例实际上与编译无关.从字符串到整数的类型转换是在运行时完成的.


小智 7

要理解为什么JavaScript是脚本语言?首先,我们理解为什么Java不是脚本语言.

我认为Scripting意味着一个项目,游戏等的书面文本,由玩家直接阅读,玩家和剧本之间没有翻译.

在JavaScript中同样的想法我们的程序就像一个戏剧或电影,写在记事本或任何其他文本页面,如EditPlus,浏览器直接通过JavaScript引擎读取,不需要编译器和解释器来显示输出浏览器,浏览器就像一个玩家.

但Java要求编译器和解释器以计算机可读格式转换编写的Java编码并显示输出.因此,Java不是脚本语言,JavaScript是脚本语言.

这个描述是我对为什么JavaScript是脚本语言的看法.我试图通过现实生活中的用途来理解这个问题.我觉得你很满意.


Mik*_*ain 5

2017年更新

“脚本语言很像淫秽。我无法定义它,但是看到它我就会知道。” - 拉里·沃尔

出于此答案的目的,我们假定它表示的语言是:

  1. 缺乏“真实”语言的某些功能(无论其含义是什么),因此作为系统中其他组件之间的“胶水”最为有用,并且
  2. 是解释而不是编译。

实际上,JavaScript实际上曾经被认为是一种脚本语言,具有操纵DOM,执行表单验证和使耶稣跳舞的基本功能。它是由翻译直接从源代码执行的。

但是JS在过去几年中已经相当成熟,具有诸如lambda,类(无论好坏),解构,迭代器和模块等高级功能,这些功能使其功能可以与大多数其他现代语言相提并论。不再局限于浏览器,它通常也可以在NodeJS下的服务器上独立运行。

现在,Javascript普遍进行了JIT编译,可以编译为字节码(如Java和C#),也可以直接编译为机器代码(如C和C ++)。现代引擎提供了一个优化阶段,类似于大多数传统的编译语言。

V8(Chrome,节点)

V8 在执行之前将JavaScript直接编译为本机代码

脉轮代码(边缘)

Chakra Core [可以]执行并行JIT编译 ...

SpiderMonkey(Firefox)

SpiderMonkey 38包含一个即时编译器(JIT),可将JavaScript编译为机器代码 ...

因此,如果现代JS被认为是一种脚本语言,那么大多数其他非“脚本”语言也应采用相同的语言。