我个人认为 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);
}
setTimeout
在这两种情况下,您都会得到由 eval'd字符串显示的输出“2” 。但是在 JScript 中,即使是 IE8 中的最新版本,尾随逗号意味着数组有三个条目,而不是两个。详细信息在这里。因此,IE9 在这两种情况下都使用其最新的解释器,如果您将“JScript”作为第三个参数传递,则不会以某种方式降级为“JScript”。
更新:同样(我刚刚启动了我的 IE8 盒子),如果你在 IE8 上运行它,你在这两种情况下都会得到“3”。