Maison > interface Web > js tutoriel > 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
Libérer: 2024-10-24 06:06:30
original
1033 Les gens l'ont consulté

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>
Copier après la connexion

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>
Copier après la connexion
  • [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!

source:php
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal