我正在开发一个应用程序,不必担心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关键字? (或者我做错了什么?)
答案 0 :(得分:35)
编辑:let
和const
,并且是ECMAScript 2015 (ES6)规范的一部分。
基本上,如果您不需要支持IE11以下的任何内容,let
和const
现在可以安全使用。
在 IE11 上,当let
循环使用时,for
有一个小怪癖,变量未按预期绑定到for
块,它的行为与var
一样......
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:
let
&#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)
显然,Internet Explorer 10模式Edge支持let
,每 JavaScript Version Information 。
答案 5 :(得分:3)
自从第一次提出这个问题以来已经过了很多时间:在ECMAScript 2015(ES6)中引入了'let'和'const'关键字。在这个令人敬畏的ES6兼容性表中搜索'let'或'const': https://kangax.github.io/compat-table/es6/
答案 6 :(得分:2)
只是更新:Chrome现在支持let
,但前提是"use strict"
;指令。