Las matrices son como lvalues en JavaScript ECMAScript compatible?
-
11-09-2019 - |
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.
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.