首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IE能同时解释JScript和JavaScript吗?

IE能同时解释JScript和JavaScript吗?
EN

Stack Overflow用户
提问于 2011-07-22 13:49:21
回答 6查看 1.3K关注 0票数 7

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引擎吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-07-22 13:56:14

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

它是。第三个参数的"JScript“和"JavaScript”值只是同义词。我找不到它的参考,但是你可以确定IE周围没有两个独立的解释器,一个有JScript语言,另一个没有。

下面是一个证据:如果您在IE9 (活拷贝)中运行这个程序:

HTML:

代码语言:javascript
运行
复制
<input type='button' id='btnJScript' value='JScript'>
<input type='button' id='btnJavaScript' value='JavaScript'>

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“。

票数 6
EN

Stack Overflow用户

发布于 2011-07-22 13:55:34

此MSDN页面中可以看出,JScript是微软实现ECMAScript 3的名称,而JavaScript是IE9中出现的ECMAScript 5实现的名称。

票数 3
EN

Stack Overflow用户

发布于 2011-07-22 13:54:18

我想我能给出的最好的答案,别人已经回答了。

众所周知,Resig先生亲自:http://ejohn.org/blog/versions-of-javascript/

片段

  • IE6-7支持JScript 5(相当于ECMAScript 3,JavaScript 1.5)
  • IE8支持JScript 6(相当于ECMAScript 3,JavaScript 1.5 - JScript 5上更多的bug修复)
  • Firefox1.0支持JavaScript 1.5 (相当于ECMAScript 3)
  • Firefox1.5支持JavaScript 1.6 (1.5 +数组Extras + E4X +misc)。
  • Firefox2.0支持JavaScript 1.7 (1.6 +生成器+迭代器+ let +misc)。
  • Firefox3.0支持JavaScript 1.8 (1.7 +生成器表达式+表达式闭包+misc)。
  • 下一个版本的火狐将支持JavaScript 1.9 (1.8 +待定)
  • Opera支持一种等价于ECMAScript 3+ Getters和Setters + misc的语言。
  • Safari支持一种等价于ECMAScript 3+ Getters和Setters + misc的语言。

我想IE9的JScript引擎(Chakra)尽可能接近"Javascript“。然而,它支持ES5的许多特性。见"IE9 Javascript引擎“。因此,我们可能可以将上面的列表扩展到

  • IE9支持JScript 9(相当于ECMAScript 5,JavaScript 1.8.5)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6790982

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档