JavaScript和JScript有什么区别?

126

我一直想知道 JScript 和 JavaScript 之间到底有什么区别。


我相信已经有人指出了,但是在IE中,你不能使用const关键字来声明变量:const MY_CONSTANT = 10; - dplante
13个回答

89

这只是对ECMAScript的不同称呼。John Resig有一个很好的解释

以下是完整版本的分解:

  • IE 6-7支持JScript 5(相当于ECMAScript 3,JavaScript 1.5)
  • IE 8支持JScript 6(相当于ECMAScript 3,JavaScript 1.5 - 更多的错误修复比JScript 5)
  • Firefox 1.0支持JavaScript 1.5(ECMAScript 3等效)
  • Firefox 1.5支持JavaScript 1.6(1.5+ Array Extras + E4X +杂项)
  • Firefox 2.0支持JavaScript 1.7(1.6+ Generator + Iterators + let +杂项)
  • Firefox 3.0支持JavaScript 1.8(1.7+ Generator Expressions + Expression Closures +杂项)
  • 下一个版本的Firefox将支持JavaScript 1.9(1.8+待定内容)
  • Opera支持一种语言,相当于ECMAScript 3+ Getters和Setters +杂项
  • Safari支持一种语言,相当于ECMAScript 3+ Getters和Setters +杂项

17
这是错误的。JScript支持一些JavaScript中不存在的语法特性,包括 f(x) = y。请查看此问题获取更多信息。 - Asad Saeeduddin
4
@Malachi 我不需要。Patrick的答案是正确的。 - Asad Saeeduddin

39

据我所知,两件事:

  1. ActiveXObject 构造函数
  2. 习惯用法 f(x) = y,大致等同于 f[x] = y。

6
“f(x) = y” 这个说法让我最为不爽!为什么他们不直接用“f[x] = y”呢…… - Ates Goral
2
微软需要在这个时代留下他们的印记。这就是你知道它很好的方式。 - cchamberlain

20

来源自维基百科:http://en.wikipedia.org/wiki/Jscript

JScript是微软方言的ECMAScript脚本语言规范。

JavaScript(Netscape/Mozilla的ECMA规范实现),JScript和ECMAScript是非常相似的语言。实际上,“JavaScript”这个名字经常用来指代ECMAScript或JScript。

微软使用JScript名称来实现避免商标问题(JavaScriptOracle Corporation的商标)。


8
这完全没有回答问题。问题是:“JavaScript和JScript之间有什么区别?”正确的答案被深埋在相同内容的多次重申中。 - Asad Saeeduddin

7

JScript是微软对ECMAScript规范的实现。JavaScript是该规范的Mozilla实现。


7
Javascript这门语言最早由Netscape开发。Microsoft进行了逆向工程,将其称为JScript以避免与Sun公司的商标问题产生冲突(当时Netscape和Sun公司是合作伙伴,因此这个问题不太严重)。这两种语言是相同的,都是ECMA脚本的方言,这是一种事后的标准。虽然这两种语言是相同的,但由于JScript在Internet Explorer中运行,因此它可以访问浏览器暴露的不同对象(例如ActiveXObject)。

11
另一篇文章已经指出,这两种语言实际上并不完全相同。 - EFraim

4
很久以前,所有浏览器提供商都为其浏览器制作JavaScript引擎,只有他们和上帝知道内部发生了什么。某一天,ECMA国际组织出现并说:让我们基于通用标准制作引擎,让生活更轻松愉快,于是他们制定了该标准。 由于所有浏览器提供商都基于ECMAScript核心(标准)制作其JavaScript引擎。
例如,Google Chrome使用V8引擎,这是开源的。您可以下载它并查看C++程序如何将JavaScript的“print”命令转换为机器码。
Internet Explorer使用JScript(Chakra)引擎进行浏览器操作,其他浏览器也是如此,并且它们都使用通用核心。

4

JScript是Microsoft实现的Javascript


47
JScript是微软对ECMAScript的实现。 - Logan Besecker
为什么Netscape没有因为Microsoft实现JavaScript而提起诉讼? - ezio

4
根据文章:
  • JavaScript是由Netscape Communications开发的一种脚本语言,旨在开发客户端和服务器Internet应用程序。Netscape Navigator被设计为解释嵌入Web页面中的JavaScript。JavaScript与Sun Microsystem的Java语言无关。

  • Microsoft JScript是Netscape JavaScript的开放实现。JScript是一种高性能的脚本语言,旨在创建用于Web的活动在线内容。 JScript允许开发人员链接和自动化Web页面中的各种对象,包括ActiveX控件和Java程序。Microsoft Internet Explorer被设计为解释嵌入到Web页面中的JScript。


3
据我所知,@phrj说的这个“开放”的定义就像《亨普帝·韵文儿歌》中的“强壮”的定义一样。在此情况下,“开放”意味着“正交”。 - Shog9
7
在V8引擎出现之前,称JScript为“高性能”语言让人意识到我们已经取得了多么大的进步。 - Ray Toal
9
第二个列表项看起来像广告材料 - "开放实现" 实际上是指 "你必须要开放心态去接受它",而 "高性能" 意味着 "旨在在高性能计算机上运行"。 - Camilo Martin
为什么Netscape没有因微软实现JavaScript而提起诉讼? - ezio

3

需要注意的是,有一些代码差异。

subtr不支持负数作为第一个参数,例如在Javascript中: "string".substr(-1) 返回 "g",然而在JScript中: "string".substr(-1) 返回 "string"

Javascript可以通过"string"[0]获取 "s" ,但是JScript不支持这种构造。(实际上,只有现代浏览器支持"string"[0] 构造)


1

维基百科 this 中提到了这些差异。

一般来说,JScript 是一种 ActiveX 脚本语言,可能会被非 IE 浏览器解释为 JavaScript。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接