Pregunta

Firefox 3.5.3 (al menos) me permite escribir código como:

var array = [4, 5, 6];
var foo, bar, baz;
[foo, bar, baz] = array;

momento en el cual

foo => 4
bar => 5
baz => 6

que puede ser muy útil para la claridad del código.

¿se considera compatible con ECMAScript? No vi nada en la especificación, pero JSLint devuelve un error.

¿Fue útil?

Solución

No, eso es una característica introducida en JavaScript 1.7 llamada asignación desestructurada . JavaScript no es ECMAScript. ECMAScript es el intento de estandarización de algunas de las características de JavaScript. Sólo hay dos motores de JavaScript: (Araña | Traza | Acción) Mono y Rhino. Cada otro motor es un motor de ECMAScript.

Estos son algunos ejemplos:

var {a, b} = {b:2, a:1}; // a === 1, b === 2
var [c, d] = [3, 4]; // c === 3, d === 4
var {x: e} = {x: 5}; //  e === 5
function f({a, b: c}, [d, e]) {
  // same as: var [{a, b: c}, [d, e]] = arguments
}

Opera implementa parcialmente algunas asignación desestructurada. No es compatible para objetos o en los argumentos de funciones, pero es compatible con tu ejemplo sencillo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top