Maison  >  Article  >  interface Web  >  Pourquoi la déstructuration des tableaux entraîne-t-elle des valeurs inattendues dans ES6 ?

Pourquoi la déstructuration des tableaux entraîne-t-elle des valeurs inattendues dans ES6 ?

Patricia Arquette
Patricia Arquetteoriginal
2024-10-24 06:06:30959parcourir

Why Does Array Destructuring Result in Unexpected Values in ES6?

Bizarres de la déstructuration de tableaux dans ES6

Dans ES6, la déstructuration de tableaux fournit une syntaxe concise pour extraire et attribuer des valeurs à partir de tableaux. Cependant, certaines constructions peuvent conduire à des résultats inattendus.

L'extrait de code fourni soulève la question :

Pourquoi ce code entraîne-t-il des valeurs inattendues après la déstructuration du tableau ?

<code class="javascript">let a, b, c;
[a, b] = ['A', 'B'];
[b, c] = ['BB', 'C'];
console.log(`a=${a} b=${b} c=${c}`);</code>

Attendu : a=A, b=BB, c=C

Réel : a=BB, b=C, c= undefined

Réponse :

Le problème réside dans une omission de points-virgules, qui sépareraient normalement ces lignes en tant qu'instructions distinctes. Sans points-virgules, le code est analysé comme une seule instruction et évalué dans un ordre différent :

<code class="javascript">let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);</code>
  • [a, b] = …; est une affectation destructurante comme prévu.
  • (… = ['BB', 'C']) est une expression d'affectation qui attribue le tableau au côté gauche et évalue le tableau.
  • 'A', 'B' est une référence de propriété sur un littéral de tableau.
  • (b, c) utilise l'opérateur virgule, évaluant c (qui n'est pas défini).

Pour éviter de telles interprétations erronées et garantir une évaluation correcte, il est essentiel d'inclure explicitement des points-virgules au début de chaque ligne commençant par (, [, /, , - ou `.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn