個人的には、IEがパーサーして実行するEcmaScriptの方言はJScriptと呼ばれていると思いました。
です。3番目のパラメーターの「JScript」と「JavaScript」の値は単なる同義語です。私はそれのリファレンスを見つけることができませんが、IEには2つの別々のインタープリターがないことは確かです。1つはJScriptイズムを持ち、もう1つは持っていません。
そして、ここに証拠があります:これをIE9(ライブコピー)で実行する場合:
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
文字列によって表示される出力「2」を取得します。しかし、JScriptでは、IE8の最新バージョンでさえ、その末尾のコンマは、配列に2つではなく3つのエントリがあることを意味します。詳細はこちら。したがって、IE9はどちらの場合も最新のインタープリターを使用しており、3番目のパラメーターとして「JScript」を渡した場合に何らかの方法で「JScript」にダウンシフトすることはありません。
更新:同様に(IE8ボックスを起動したばかりです)、これをIE8で実行すると、どちらの場合も「3」になります。