IE可以解释JScript和JavaScript吗?

前端之家收集整理的这篇文章主要介绍了IE可以解释JScript和JavaScript吗?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
IE的 window.setTimeout参考指出setTimeout具有定义语言的可选第三参数.

可能的语言是JScript,VBScript和JavaScript.

我已经知道IE可以解析VBScript但是

IE如何以不同于JScript的方式解析JavaScript?

就个人而言,我认为IE解析器和运行的EcmaScript方言称为JScript.

[编辑]

正如人们所提到的,微软似乎将他们的ES3引擎标记为“JScript”,将他们的ES5引擎标记为“JavaScript”. ES5引擎在IE9中.

我们可以通过将“JScript”传递给setTimeout来在IE9中使用他们的ES3引擎吗?

解决方法

Personally I thought the dialect of EcmaScript that IE parsers and runs was called 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 + "','" + lang + "'</code>");
    setTimeout(s,lang);
  }
};

function display(msg) {
  var p = document.createElement('p');
  p.innerHTML = msg;
  document.body.appendChild(p);
}

在这两种情况下,您都会得到eval’d setTimeout字符串显示输出“2”.但是在JScript中,即使是IE8中的最新版本,尾随逗号也意味着数组有三个条目,而不是两个条目. Details on that here.因此,IE9在两种情况下都使用其最新的解释器,如果您将“JScript”作为第三个参数传递,则不会以某种方式降档到“JScript”.

更新:类似地(我刚刚启动了我的IE8盒子),如果你在IE8上运行它,你会得到“3”两种情况.

原文链接:https://www.f2er.com/js/158511.html

猜你在找的JavaScript相关文章