目前哪些浏览器支持 JavaScript 的“let”关键字?

IT技术 javascript firefox firefox3.6
2021-02-18 08:35:33

我正在开发一个应用程序,不必担心 Internet Explorer,并且正在研究 Internet Explorer1 中没有的 A+ 级浏览器中的一些功能。

我想使用的这些特性之一是JavaScript 的 let 关键字

我似乎无法让他们的任何“让”示例在 Firefox 3.6 中工作(用户代理字符串:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9.2) Gecko/20100115 Firefox/3.6 (.NET CLR 3.5.30729))。SyntaxError: missing ; before statement在执行时得到let foo = "bar".

那么,哪些浏览器支持 let 关键字?(还是我做错了什么?)

6个回答

编辑letconst由所有现代浏览器都支持,并且是一部分的ECMAScript 2015年(ES6)规范。

基本上,如果您不需要支持 IE11 以下的任何内容,let并且const现在可以安全使用。

IE11 上有一个小怪癖,let当与for循环一起使用时,变量没有for像你期望的那样绑定到块,它的行为就像var......

另见:letconst支持。


2010 年旧的和过时的答案: 这些扩展不是 ECMA 标准,它们仅由 Mozilla 实现支持。

在浏览器环境中,您应该标签中包含 JavaScript版本号script以使用它:

<script type="application/javascript;version=1.7">  
  var x = 5;
  var y = 0;

  let (x = x+10, y = 12) {
    alert(x+y + "\n");
  }

  alert((x + y) + "\n");
</script>
;version=1.7仍然在Firefox需要?let在控制台中尝试过,它奏效了。
2021-04-15 08:35:33
谢谢,我使用的是 HTML 5 的“<script></script>”而没有类型 attr。
2021-04-30 08:35:33
可以通过“实验性 Javascript 功能”标志在 Chrome 19+ 中启用,在 node.js 中使用--harmony.
2021-05-05 08:35:33
好; 我刚刚更新了我的答案,然后发现你在一分钟内击败了我;)。+1
2021-05-11 08:35:33
请注意,let关键字目前在ECMAScript中6(草案)标准。
2021-05-13 08:35:33

截至 2017 年 4 月:

  • 所有最新的主流浏览器,如 Chrome、Firefox 和 Edge 都支持 ES2015(又名“ES6”)let关键字。

  • iOS Safarilet直到 OS 10才支持(例如,OS 9 不支持)。

  • 一些较旧的浏览器,例如 IE9-IE11,支持ES2015 定义的语义(特别是与循环标头中的声明有关的早期版本,let支持for所以这不是语法错误,它确实声明了变量,但它没有按照预期的方式工作。例如,在正确的实现中,以下日志为 0、1 和 2;在 IE9-IE11 上,它记录 3、3、3:

  • IE8等过时的浏览器根本不支持它。

一个有用的答案:+1。
2021-04-22 08:35:33

Internet Explorer 11 部分支持(for范围不正确),所有当前浏览器都完全支持(ECMAScript 6 兼容性表:let)。

虽然 IE11 确实“支持”let关键字(因为它不会抛出 a SyntaxError),但它的实现不符合规范 - 变量没有正确地在块范围内。(另请注意,没有也永远不会有任何超过 11 的 IE)
2021-05-05 08:35:33

Internet Explorer 和Opera不支持let任何浏览器版本,Firefox 自 2.0 版和 Safari 自 3.2 版起。

请参阅维基百科上的JavaScript 版本表

我刚刚发现您需要定义是否使用 JavaScript 1.7。所以你的代码将是:

<script type="application/javascript;version=1.7"> ... </script>
现在似乎不推荐使用此版本规范。如果我尝试指定版本,Chrome 不会加载该 javascript。
2021-05-07 08:35:33
有关浏览器版本支持的信息已过时。
2021-05-07 08:35:33

显然,根据JavaScript 版本信息Edge模式下的Internet Explorer 10支持let