"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > 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 ?

Publié le 2024-11-06
Parcourir:906

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 :

let a, b, c
[a, b] = ['A', 'B']
[b, c] = ['BB', 'C']
console.log(`a=${a} b=${b} c=${c}`)

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

Sortie réelle :
a=BB b=C c=indéfini

Explication :

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

let a = undefined, b = undefined, c = undefined;
[a, b] = (['A', 'B']
[(b, c)] = ['BB', 'C']);
console.log(`a=${a} b=${b} c=${c}`);

Répartition de la déclaration :

  • [a, b] = (['A', 'B'] est une affectation de déstructuration, similaire à celle du code d'origine.
  • [(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 élément non défini à la fois à a et à c, tandis que b reçoit correctement la valeur « C ». Pour éviter ce comportement, les programmeurs. doit explicitement utiliser des points-virgules ou commencer chaque ligne par un opérateur qui nécessite l'insertion automatique d'un point-virgule (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.

Déclaration de sortie Cet article est reproduit le: 1729721303 S'il y a une contrefaçon, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3