[英]Can IE interpret both JScript and JavaScript?
IE 的window.setTimeout
參考聲明setTimeout
具有定義語言的可選第三個參數。
可能的語言是 JScript、VBScript 和 JavaScript。
我已經知道 IE 可以解析 VBScript 但是
IE 解析 JavaScript 與 JScript 有何不同?
我個人認為 IE 解析和運行的 EcmaScript 方言稱為 JScript。
[編輯]
正如人們所提到的,微軟似乎將他們的 ES3 引擎標記為“JScript”,將他們的 ES5 引擎標記為“JavaScript”。 ES5 引擎在 IE9 中。
我們可以通過將"JScript"
傳遞給setTimeout
在 IE9 中使用他們的 ES3 引擎嗎?
我個人認為 IE 解析和運行的 EcmaScript 方言稱為 JScript。
這是。 第三個參數的“JScript”和“JavaScript”值只是同義詞。 我找不到它的參考資料,但你可以肯定 IE 沒有兩個獨立的解釋器,一個有 JScript-isms,一個沒有。
這就是證據:如果你在 IE9 中運行它( live copy ):
HTML:
<input type='button' id='btnJScript' value='JScript'>
<input type='button' id='btnJavaScript' value='JavaScript'>
JavaScript:
window.onload = function() {
document.getElementById('btnJScript').onclick = function() {
testIt("JScript");
};
document.getElementById('btnJavaScript').onclick = function() {
testIt("JavaScript");
};
function testIt(lang) {
var s = "var a = [1, 2, ]; display(a.length);";
display("Calling <code>setTimeout</code> with <code>'" +
s + "', 0, '" + lang + "'</code>");
setTimeout(s, 0,lang);
}
};
function display(msg) {
var p = document.createElement('p');
p.innerHTML = msg;
document.body.appendChild(p);
}
在這兩種情況下,您都會得到由 eval 的setTimeout
字符串顯示的 output "2"。 但是在 JScript 中,即使是 IE8 中的最新版本,尾隨逗號意味着數組有三個條目,而不是兩個。 詳細信息在這里。 因此,IE9 在這兩種情況下都使用其最新的解釋器,如果您將“JScript”作為第三個參數傳遞,則不會以某種方式降級為“JScript”。
更新:同樣(我剛剛啟動了我的 IE8 盒子),如果你在 IE8 上運行它,你在這兩種情況下都會得到“3”。
從這個 MSDN 頁面中,您可以看到 JScript 是 Microsoft 對其 ECMAScript 3 實現的名稱,而 JavaScript 是它在 IE9 中出現的 ECMAScript 5 實現的名稱。
我想我能給出的最佳答案,其他人已經做到了。
眾所周知,Resig 先生本人:http://ejohn.org/blog/versions-of-javascript/
片段
我猜 IE9 的 JScript 引擎 ( Chakra ) 盡可能接近“Javascript”。 但是,它支持 ES5 的許多特性。 請參閱“ IE9 Javascript 引擎”。 所以我們可能可以擴展上面的列表
您可以放心地認為 JScript 與 JavaScript 相同,您不會遇到任何問題。
http://en.wikipedia.org/wiki/JScript#Comparison_to_JavaScript
JScript 和 Javascript 在 IE 中是一樣的東西。 JScript 在 IE9 中被重命名為 JavaScript 因為更標准(或更好、更可互操作)的實現。
您引用的手冊頁指出sLanguage
是一個參數,可以采用值VBScript
、 JScript
或Javascript
。
並不是 JScript 與 Javascript 不同,只是兩者都是同一語言的有效名稱,它們需要同時支持這兩個名稱。
JScript 是微軟對 Javascript 的逆向工程克隆的名稱。 這些語言現在已經被 ECMA 的標准化工作合並,產生了 EcmaScript,盡管它仍然通常被稱為 Javascript。
但微軟需要同時支持這兩個名稱,因為他們希望與為仍然使用舊 JScript 名稱的舊版 IE 編寫的舊代碼保持兼容性。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.