¿Qué navegadores admiten actualmente la palabra clave "dejar" de JavaScript?


80

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 statemental ejecutar let foo = "bar".

Entonces, ¿qué navegadores admiten la palabra clave let? (¿O estoy haciendo algo mal?)


Aunque entienda y esté de acuerdo con su no-importa-si-funciona-en-IE, debe considerar que la palabra clave "dejar" es solo para mozilla, por lo que incluso si está bien decir "IE no lo admite", el manera de decirlo, sería "sólo mozilla lo admite". Del mismo modo que evitamos las etiquetas o palabras clave de solo IE, debe evitar las palabras clave de solo *.
WhyNotHugo

Hugo, debes tener en cuenta que HTML, CSS, JS ya no es una plataforma solo web. El código resulta ser un código que nunca se ejecutará en ninguna versión de IE, ni en ningún navegador web , de hecho. :-)
David Murdoch

¿Qué diablos está tratando de hacer Apple? Es 2015 y no hay señales de letsoporte en su patético navegador.
Salman von Abbas

3
TENGA EN CUENTA Muchas de las respuestas anteriores (incluida la respuesta aceptada) han sido superadas por eventos. Todos los principales navegadores actualizados admiten la letpalabra 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).
TJ Crowder

Sugiero cambiar su respuesta aceptada por una de las ahora correctas. Sí, el actualmente aceptado era correcto en ese momento, pero ha sido incorrecto durante varios años, y el propósito de SO es ser un depósito de conocimiento, no un archivo histórico. :-)
TJ Crowder

Respuestas:


56

EDITAR : lety constson 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 lety constes seguro usarlo hoy en día.

En IE11 hay una pequeña peculiaridad letcuando se usa con forbucles, la variable no está vinculada al forbloque como era de esperar, se comporta como lo varhizo ...

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

1
Bien; Acabo de actualizar mi respuesta y luego descubrí que me ganaste en un minuto;). +1
Harmen

1
Gracias, estaba usando '<script> </script>' de HTML 5 sin el tipo attr.
David Murdoch

19
Tenga en cuenta que la letpalabra clave ahora está en el estándar ECMAscript 6 (borrador).
Nico Burns

3
Se puede habilitar en Chrome 19+ a través del indicador "Funciones experimentales de Javascript" y en node.js usando --harmony.
Salman von Abbas

2
¿ ;version=1.7Sigue siendo necesario en Firefox? Probé leten la consola y funcionó.
sam

31

A abril de 2017:

  • Todos los principales navegadores actualizados, como Chrome, Firefox y Edge, admiten la letpalabra clave ES2015 (también conocida como "ES6") .

  • iOS Safari no fue compatible lethasta OS 10 (por ejemplo, OS 9 no lo hizo).

  • Algunos navegadores más antiguos, como IE9-IE11, admiten una versión anterior, letpero no admiten la semántica definida por ES2015 (particularmente en relación con las declaraciones en los encabezados de los forbucles). 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:

  • Los navegadores obsoletos como IE8 no lo admiten en absoluto.


1
Una respuesta útil: +1.
MWiesner


12

Internet Explorer y Opera no son compatibles letcon 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>

Parece que esta especificación de versión está obsoleta ahora. Si intento especificar la versión, Chrome no carga ese javascript.
Jay Shah



2

Solo una actualización: Chrome ahora es compatible, letpero solo si declaras "use strict"; directiva.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.