Estoy desarrollando una aplicación y no tengo que preocuparme nunca por Internet Explorer y estaba investigando algunas de las características presentes en los navegadores de grado A + que no están en Internet Explorer1.
Una de estas características con las que quería jugar es la palabra clave let de JavaScript
Parece que no puedo conseguir que ninguno de sus ejemplos de 'permitir' funcione en Firefox 3.6 ( cadena de usuario-agente : 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)). Me sale SyntaxError: missing ; before statement
al ejecutar let foo = "bar"
.
Entonces, ¿qué navegadores admiten la palabra clave let? (¿O estoy haciendo algo mal?)
javascript
firefox
firefox3.6
David Murdoch
fuente
fuente
let
soporte en su patético navegador.let
palabra clave ES2015 (también conocida como "ES6") , pero a partir de este momento, el soporte es bastante nuevo en algunos círculos (solo iOS 10 Safari, por ejemplo).Respuestas:
EDITAR :
let
yconst
son compatibles con todos los navegadores modernos y forman parte de la especificación ECMAScript 2015 (ES6) .Básicamente, si no necesita admitir nada por debajo de IE11
let
yconst
es seguro usarlo hoy en día.En IE11 hay una pequeña peculiaridad
let
cuando se usa confor
bucles, la variable no está vinculada alfor
bloque como era de esperar, se comporta como lovar
hizo ...Ver también: let y const support.
Respuesta antigua y desactualizada de 2010: esas extensiones no son ECMA-Standard, solo son compatibles con la implementación de Mozilla.
En entornos de navegador, debe incluir el número de versión de JavaScript en su
script
etiqueta para usarlo:<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>
fuente
let
palabra clave ahora está en el estándar ECMAscript 6 (borrador).--harmony
.;version=1.7
Sigue siendo necesario en Firefox? Probélet
en la consola y funcionó.A abril de 2017:
Todos los principales navegadores actualizados, como Chrome, Firefox y Edge, admiten la
let
palabra clave ES2015 (también conocida como "ES6") .iOS Safari no fue compatible
let
hasta OS 10 (por ejemplo, OS 9 no lo hizo).Algunos navegadores más antiguos, como IE9-IE11, admiten una versión anterior,
let
pero no admiten la semántica definida por ES2015 (particularmente en relación con las declaraciones en los encabezados de losfor
bucles). Por lo tanto, no es un error de sintaxis y declara la variable, pero no funciona como se supone que debe hacerlo. Por ejemplo, en una implementación correcta, los siguientes registros 0, 1 y 2; en IE9-IE11, registra 3, 3, 3:Mostrar fragmento de código
for (let i = 0; i < 3; ++i) { setTimeout(function() { console.log(i); }, i * 100); }
Los navegadores obsoletos como IE8 no lo admiten en absoluto.
fuente
Hay soporte parcial en Internet Explorer 11 (el
for
alcance es incorrecto ) y soporte completo en todos los navegadores actuales ( tabla de compatibilidad de ECMAScript 6: let ).fuente
let
palabra clave (en el sentido de que no arroja aSyntaxError
), su implementación no se ajusta a la especificación: la variable no tiene un alcance de bloque adecuado. (tenga en cuenta también que no hay ni habrá ningún IE después del 11)Internet Explorer y Opera no son compatibles
let
con ninguna versión del navegador, Firefox desde la versión 2.0 y Safari desde la 3.2.Consulte esta tabla de versiones de JavaScript en Wikipedia.
Me acabo de enterar de que necesitas definir si usas JavaScript 1.7 o no. Entonces tu código será:
<script type="application/javascript;version=1.7"> ... </script>
fuente
Aparentemente, Internet Explorer 10 en modo Edge admite
let
, según la información de versión de JavaScript .fuente
Ha pasado mucho tiempo desde que se hizo esta pregunta por primera vez: las palabras clave 'let' y 'const' se han introducido en ECMAScript 2015 (ES6). Busque 'let' o 'const' en esta increíble tabla de compatibilidad de ES6: https://kangax.github.io/compat-table/es6/
fuente
Solo una actualización: Chrome ahora es compatible,
let
pero solo si declaras"use strict"
; directiva.fuente