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

Dav*_*och 72 javascript firefox firefox3.6

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

我想要使​​用的其中一个功能是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关键字?(或者我做错了什么?)

CMS*_*CMS 41

编辑:letconst得到所有现代浏览器的支持,并且是ECMAScript 2015(ES6)规范的一部分.

基本上如果你不需要支持IE11以下的任何东西,let并且const现在可以安全使用.

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

另请参见:letconst支持.


从2010年开始的旧的和过时的答案: 这些扩展不是ECMA-Standard,只有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>
Run Code Online (Sandbox Code Playgroud)

  • 请注意,`let`关键字*现在是ECMAscript 6(草案)标准中的*. (19认同)
  • 可以通过"实验性Javascript功能"标志在Chrome 19+中启用,使用`--harmony`在node.js中启用. (3认同)
  • Firefox中仍然需要`; version = 1.7`吗?我在控制台中尝试了`let`并且它有效. (2认同)

T.J*_*der 28

截至2017年4月:

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

  • iOS letOS直到OS 10 才支持(例如,OS 9没有).

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

     for (let i = 0; i < 3; ++i) {
          setTimeout(function() {
              console.log(i);
           }, i * 100);
      }
     
    Run Code Online (Sandbox Code Playgroud)

  • 诸如IE8之类的过时浏览器根本不支持它.


sam*_*sam 25

Internet Explorer 11中有部分支持(for范围不正确)并且在所有当前浏览器中都提供完全支持(ECMAScript 6兼容性表:let).


Har*_*men 12

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

在维基百科上查看此JavaScript版本表.

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

<script type="application/javascript;version=1.7"> ... </script>
Run Code Online (Sandbox Code Playgroud)


jmo*_*eno 6

显然,Edge模式下的Internet Explorer 10支持每个JavaScript版本信息.let