哪些浏览器目前支持JavaScript'let'关键字?

时间:2010-03-01 15:26:51

标签: javascript firefox firefox3.6

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

我想要使用的其中一项功能是JavaScript's let keyword

我似乎无法让他们的任何'let'示例在Firefox 3.6中工作(User-Agent字符串: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关键字? (或者我做错了什么?)

7 个答案:

答案 0 :(得分:35)

所有现代浏览器均支持

编辑letconst,并且是ECMAScript 2015 (ES6)规范的一部分。

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

IE11 上,当let循环使用时,for有一个小怪癖,变量未按预期绑定到for块,它的行为与var一样......

另请参阅:letconst支持。


2010年旧的和过时的答案: 这些扩展不是ECMA-Standard,只有Mozilla实现支持它们。

在浏览器环境中,您应在script标记中加入JavaScript 版本号以使用它:

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

答案 1 :(得分:24)

Internet Explorer 11(for scope is incorrect)提供部分支持,并且在所有当前浏览器(ECMAScript 6 compatibility table: let)中提供全面支持。

答案 2 :(得分:23)

截至2017年4月:

  • 所有最新的主流浏览器(如Chrome,Firefox和Edge)都支持ES2015(又名&#34; ES6&#34;)getHeaderFields()关键字。

  • iOS OS在OS 10之前不支持getHeaderFields().get("headername")(例如,OS 9没有)。

  • 某些较旧的浏览器(如IE9-IE11)支持let的早期版本,但不支持支持ES2015定义的语义(特别是与let循环标题中的声明。所以它不是语法错误,它确实声明了变量,但它并没有像它应该的那样工作。例如,在正确的实现中,以下日志记录0,1和2;在IE9-IE11上,它记录了3,3,3:

    &#13;
    &#13;
    let
    &#13;
    &#13;
    &#13;

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

答案 3 :(得分:12)

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

在维基百科上查看此JavaScript version table

I just found out您需要定义是否使用JavaScript 1.7。所以你的代码将是:

<script type="application/javascript;version=1.7"> ... </script>

答案 4 :(得分:6)

答案 5 :(得分:3)

自从第一次提出这个问题以来已经过了很多时间:在ECMAScript 2015(ES6)中引入了'let'和'const'关键字。在这个令人敬畏的ES6兼容性表中搜索'let'或'const': https://kangax.github.io/compat-table/es6/

答案 6 :(得分:2)

只是更新:Chrome现在支持let,但前提是"use strict";指令。