2010-04-26 210 views
39

根據維基百科的說法,IE8僅支持Javascript 1.5。所以他們說IE8完全忽略了Javascript版本1.6,1.7,1.8和1.9。IE8支持哪些Javascript版本?

我應該相信嗎?這是真的嗎?

+13

你應該用你在這裏學到的知識去更新維基百科文章。 – 2010-04-26 16:04:30

回答

43

那麼,實際上IE的實現叫做JScript,JavaScript(TM)是Mozilla的實現。

JScript和JavaScript是兩個基於ECMAScript的方言。

JavaScript 1.5符合ECMAScript 3rd Edition Standard,後續版本JS 1.6,1.7和1.8引入超出標準版本的語言功能,通常稱爲Mozilla擴展

這就是爲什麼JScript沒有任何這些功能,因爲它們不是ECMA標準的一部分。

+13

ECMAscript 5於2009年12月發佈(在此答案之前的幾個月),將許多這些新功能整合到標準中。 – 2011-04-01 19:24:02

+4

IE8是否支持ECMAscript 5呢? – noname 2014-02-05 22:15:15

+3

@BenNelson廣義而言,NO。來源:http://kangax.github.io/compat-table/es5/#ie8 – Potherca 2014-05-28 13:56:29

3

是的,這是真的(至少就支持哪種語言功能而言)。您可以使用一些Javascript的1.6代碼輕鬆檢查這個:

alert([1,2,3].indexOf(2)); 

IE 8引發錯誤。

請注意,IE 8可能支持在較新版本的Javascript中添加的一些功能。 IE包含了很多標準之外的東西,所以它可能與後面的增加相同。

18

此測試取自here在我的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> 
+3

這很有趣... – MatteoSp 2010-04-26 17:12:33

+5

http://jsfiddle.net/jPZj9/ – 2012-11-16 19:53:14

+2

此測試在Internet Explorer 11上也返回1.3 ... – Shaffe 2014-03-18 14:31:45

15

IE根本不支持JavaScript。 「JavaScript」特指Mozilla實施的ECMAScript標準。這個標準最初來源於Netscape/Mozilla關於該語言的工作,但後來他們已經發生了分歧。 IE的ECMAScript實現被稱爲「JScript」,它不支持Mozilla提供的許多擴展。

ECMAScript IE旨在的版本是第三版標準,也是JavaScript 1.5針對的版本,這就是爲什麼它們被認爲是相似的原因。 Opera,Safari和Chrome的JavaScript引擎都針對同一個版本;雖然所有的實現都有錯誤,這意味着它們不完全符合規範,但總體而言,ECMAScript第三版對於今天的工作來說是一個堅實的基準。

ECMAScript的下一個版本是最近被標準化的第五版。所有的瀏覽器都從這個規範中挑選了一些功能,希望它在未來能夠得到廣泛的支持。它不符合任何特定的「JavaScript」版本;它明顯地提取了以前在JavaScript 1.5中使用的一些有用的StringArray方法,但在標準中找不到大多數Mozilla的JS語法擴展。