IE的window.setTimeout
引用指出,setTimeout
有一个可选的第三个参数来定义该语言。
可能的语言有JScript、VBScript和JavaScript。
我已经知道IE可以解析VBScript,但是
IE如何解析JavaScript与JScript?
就我个人而言,我认为EcmaScript的方言IE解析器和运行被称为JScript。
编辑
正如人们所提到的,微软似乎将他们的ES3引擎命名为"JScript“,将他们的ES5引擎标记为"JavaScript”。ES5引擎在IE9中。
我们可以通过将"JScript"
传递给 setTimeout
在IE9中使用他们的ES3引擎吗?
发布于 2011-07-22 13:56:14
就我个人而言,我认为EcmaScript的方言IE解析器和运行被称为JScript。
它是。第三个参数的"JScript“和"JavaScript”值只是同义词。我找不到它的参考,但是你可以确定IE周围没有两个独立的解释器,一个有JScript语言,另一个没有。
下面是一个证据:如果您在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);
}
在这两种情况下,您都会得到由eval'd setTimeout
字符串显示的输出"2“。但是在JScript中,甚至在IE8中的最新版本中,尾随逗号意味着数组有三个条目,而不是两个。因此,如果将“详细情况在这里。”作为第三个参数传递给"JScript“,则IE9在这两种情况下都使用它的最新解释器,而不是以某种方式切换到"JScript”。
Update:类似地(我刚刚启动了自己的IE8框),如果您在IE8上运行它,那么在这两种情况下都会得到"3“。
发布于 2011-07-22 13:55:34
从此MSDN页面中可以看出,JScript是微软实现ECMAScript 3的名称,而JavaScript是IE9中出现的ECMAScript 5实现的名称。
发布于 2011-07-22 13:54:18
我想我能给出的最好的答案,别人已经回答了。
众所周知,Resig先生亲自:http://ejohn.org/blog/versions-of-javascript/
片段
我想IE9的JScript引擎(Chakra)尽可能接近"Javascript“。然而,它支持ES5的许多特性。见"IE9 Javascript引擎“。因此,我们可能可以将上面的列表扩展到
https://stackoverflow.com/questions/6790982
复制相似问题