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


80

我正在开发一个应用程序,不必担心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关键字?(或者我做错了什么?)


在了解并同意您在IE上不起作用的同时,您应该考虑到“ let”关键字仅适用于mozilla,因此即使可以说“ IE不支持它”也可以,这样说,就是“只有mozilla支持它”。就像我们避免使用仅限IE的标记或关键字一样,您也应避免使用和*仅关键字。
WhyNotHugo

雨果,您需要记住HTML,CSS,JS不再是仅基于Web的平台。该代码恰好是永远不会在任何版本的IE或任何Web浏览器中运行的代码。:-)
David Murdoch

苹果到底要做什么呢?是2015年,let可悲的浏览器没有任何支持的迹象。
Salman von Abbas 2015年

3
请注意,许多较早的答案(包括已接受的答案)已被事件取代。所有主要的最新浏览器都支持ES2015(也称为“ ES6”)let关键字,但是截至本文撰写之时,某些圈子中的支持还是相当新的(例如,仅iOS 10 Safari)。
TJ人群

我建议将您接受的答案更改为现在正确的答案之一。是的,当前接受的标准当时是正确的,但几年来一直是错误的,SO的目的是成为知识的存储库,而不是历史档案。:-)
TJ Crowder

Answers:


55

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

1
好; 我刚刚更新了答案,然后发现您在一分钟内击败了我;)。+1
哈曼(Harmen)2010年

1
谢谢,我使用的是HTML 5的'<script> </ script>',没有类型attr。
大卫·默多克

19
请注意,let关键字目前在ECMAScript中6(草案)标准。
Nico Burns 2012年

3
可以通过“ Experimental Javascript features”标志在Chrome 19+中启用,也可以使用在node.js中启用--harmony
Salman von Abbas

2
;version=1.7Firefox是否仍然需要?我let在控制台中尝试过,它起作用了。
2013年

30

截至2017年4月:

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

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

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

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


1
一个有用的答案:+1。
MWiesner '18 -4-11


12

Internet Explorer和Opera不支持let任何浏览器版本,Firefox从2.0版本开始,而Safari从3.2版本开始。

请参阅Wikipedia上的此JavaScript版本表

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

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

似乎不建议使用此版本规范。如果我尝试指定版本,则Chrome不会加载该javascript。
杰伊·沙


3

自首次提出此问题以来,已经过去了很多时间:ECMAScript 2015(ES6)中引入了'let'和'const'关键字。在此很棒的ES6兼容性表中搜索“ let”或“ const”:https ://kangax.github.io/compat-table/es6/


2

只是更新:Chrome现在支持,let但前提是您声明了"use strict"; 指示。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.