我应该相信吗?这是真的吗?
实际上,IE的实现称为JScript,而JavaScript(TM)则是Mozilla的实现。
JScript和JavaScript是两种基于ECMAScript的方言。
JavaScript 1.5 符合ECMA-262 第3版标准,随后的版本JS 1.6、1.7和1.8引入了该标准之外的语言特性,通常称为Mozilla扩展。
这就是为什么JScript没有任何这些功能,因为它们不是ECMA标准的一部分。
这个测试是从这里获取的,在我的Internet Explorer 8 64位浏览器中返回1.3
。
<SCRIPT Language="JavaScript1.3">
jsver = "1.3";
</SCRIPT>
<SCRIPT Language="JavaScript1.4">
jsver = "1.4";
</SCRIPT>
<SCRIPT Language="JavaScript1.5">
jsver = "1.5";
</SCRIPT>
<SCRIPT Language="JavaScript1.6">
jsver = "1.6";
</SCRIPT>
<SCRIPT Language="JavaScript1.7">
jsver = "1.7";
</SCRIPT>
<SCRIPT Language="JavaScript1.8">
jsver = "1.8";
</SCRIPT>
<BODY>
<SCRIPT LANGUAGE="JavaScript">
document.write("<B>Your browser supports JavaScript version " + jsver + ".</B>")
</SCRIPT>
</body>
</html>
IE浏览器完全不支持JavaScript。“JavaScript”特指Mozilla对ECMAScript标准的实现。该标准最初源自Netscape/Mozilla的语言工作,但它们已经分道扬镳。IE浏览器对ECMAScript的实现被称为“JScript”,它不支持Mozilla所做的许多扩展。
IE针对的ECMAScript版本是第三版标准,这也是JavaScript 1.5的目标版本,这就是它们被认为相似的原因。Opera、Safari和Chrome的JavaScript引擎都针对这个版本;虽然所有实现都存在一些错误,导致它们没有完全符合规范,但总的来说,ECMAScript第三版是今天可行的一个坚实基础。
下一个版本的ECMAScript是第五版,它最近被标准化。所有浏览器都在从该规范中获取功能,并希望它将来能够得到广泛支持。它与任何特定的“JavaScript”版本都不对齐;它显著地吸收了一些之前在JavaScript 1.5中的有用的String
和Array
方法,但你在标准中找不到大多数Mozilla对JS的语法扩展。
是的,这是真的(至少就支持哪些语言特性而言)。您可以使用一些Javascript 1.6代码轻松检查此内容:
alert([1,2,3].indexOf(2));
IE 8会报错。
请注意,IE 8可能支持一些后来版本JavaScript添加的功能。IE包含了许多标准外的东西,因此很可能其中一些与后来的添加相同。