Desestructuración de matrices ES6: comportamiento imprevisto
En ES6, la tarea de desestructuración de matrices puede generar resultados inesperados, dejando a los programadores desconcertados. Uno de esos casos se ilustra con el siguiente código:
let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)
Salida prevista:
a=A b=BB c =C
Salida real:
a=BB b=C c=indefinido
Explicación:
Contrario Según las expectativas, este código no produce el resultado deseado. En cambio, intercambia los valores de b y c, dejando c indefinido. Para comprender por qué sucede esto, debemos examinar el código de cerca.
Análisis y evaluación:
En JavaScript, los puntos y coma son opcionales para delimitar declaraciones. Sin punto y coma explícitos, el código se analiza como una sola declaración:
let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);
Desglose de la declaración:
Implicaciones:
Por lo tanto, el código asigna indefinido tanto a a como a c, mientras que b recibe correctamente el valor 'C'. Para evitar este comportamiento, los programadores. debe usar explícitamente punto y coma o comenzar cada línea con un operador que requiera que se inserte automáticamente un punto y coma (por ejemplo, (, [, /, - o `).
Esta comprensión garantiza que las asignaciones de desestructuración en ES6 funcionen como se esperaba, evitando intercambios de valor inesperados y asignaciones indefinidas.
Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.
Copyright© 2022 湘ICP备2022001581号-3