Maison > interface Web > js tutoriel > Déstructuration des baies ES6 : pourquoi cela ne fonctionne-t-il pas comme prévu ?

Déstructuration des baies ES6 : pourquoi cela ne fonctionne-t-il pas comme prévu ?

Susan Sarandon
Libérer: 2024-10-24 06:10:02
original
943 Les gens l'ont consulté

ES6 Array Destructuring: Why Doesn't It Work As Expected?

Déstructuration des tableaux ES6 : comportement imprévu

Dans ES6, l'affectation de déstructuration des tableaux peut conduire à des résultats inattendus, laissant les programmeurs perplexes. Un tel exemple est illustré par le code suivant :

<code class="js">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

Sortie prévue :
a=A b=BB c=C

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

Explication :

Contrairement aux attentes, ce code ne donne pas le résultat souhaité. Au lieu de cela, il échange les valeurs de b et c, laissant c indéfini. Pour comprendre pourquoi cela se produit, nous devons examiner le code de près.

Analyse et évaluation :

En JavaScript, les points-virgules sont facultatifs pour délimiter les instructions. Sans points-virgules explicites, le code est analysé comme une seule instruction :

<code class="js">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

Répartition de l'instruction :

  • [a, b] = ([ 'A', 'B'] est une affectation déstructurante, similaire à celle du code original.
  • [(b, c)] = ['BB', 'C'] est une expression d'affectation qui attribue le tableau ['BB', 'C'] à l'opérande de gauche. Cette expression est évaluée comme le même tableau.
  • ['A', 'B'][…] est une référence de propriété sur. un littéral de tableau, qui est évalué comme indéfini.
  • (b, c) utilise l'opérateur virgule, qui est évalué comme étant le dernier opérande (c), qui n'est pas défini.

Implications :

Par conséquent, le code attribue un caractère indéfini à la fois à a et à c, tandis que b reçoit correctement la valeur « C ». Pour éviter ce comportement, les programmeurs doivent explicitement utiliser des points-virgules ou commencer chaque ligne par un. opérateur qui nécessite qu'un point-virgule soit automatiquement inséré (par exemple, (, [, /, , - ou `).

Cette compréhension garantit que les affectations de déstructuration dans ES6 fonctionnent comme prévu, empêchant les échanges de valeurs inattendus et les affectations non définies .

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 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