Ray*_*nos 7 javascript internet-explorer javascript-engine
window.setTimeoutIE 的引用声明setTimeout具有定义语言的可选第三个参数.
可能的语言是JScript,VBScript和JavaScript.
我已经知道IE可以解析VBScript但是
IE如何以不同于JScript的方式解析JavaScript?
就个人而言,我认为IE解析器和运行的EcmaScript方言称为JScript.
[ 编辑 ]
正如人们所提到的,微软似乎将他们的ES3引擎标记为"JScript",将他们的ES5引擎标记为"JavaScript".ES5引擎在IE9中.
我们可以使用IE9他们ES3引擎通过传递"JScript"来setTimeout?
就个人而言,我认为IE解析器和运行的EcmaScript方言称为JScript.
它是.第三个参数的"JScript"和"JavaScript"值只是同义词.我找不到它的参考,但你可以肯定IE没有两个独立的解释器,一个有JScript-isms,另一个没有.
这是证据:如果你在IE9(实时拷贝)中运行它:
HTML:
<input type='button' id='btnJScript' value='JScript'>
<input type='button' id='btnJavaScript' value='JavaScript'>
Run Code Online (Sandbox Code Playgroud)
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);
}
Run Code Online (Sandbox Code Playgroud)
在这两种情况下,您都会得到eval'd setTimeout字符串显示的输出"2" .但是在JScript中,即使是IE8中的最新版本,尾随逗号也意味着数组有三个条目,而不是两个条目.详情请点击此处.因此,IE9在两种情况下都使用其最新的解释器,如果您将"JScript"作为第三个参数传递,则不会以某种方式降档到"JScript".
更新:同样(我刚刚启动了我的IE8盒子),如果你在IE8上运行这个,你会得到"3"两种情况.
| 归档时间: |
|
| 查看次数: |
1238 次 |
| 最近记录: |