Maison  >  Article  >  interface Web  >  Les fonctions fléchées ont-elles leur propre objet Arguments dans ES6 ?

Les fonctions fléchées ont-elles leur propre objet Arguments dans ES6 ?

Barbara Streisand
Barbara Streisandoriginal
2024-10-18 15:57:03121parcourir

Do Arrow Functions Have Their Own Arguments Object in ES6?

Fonctions fléchées ES6 : l'énigme des arguments

Dans le domaine de JavaScript, les fonctions fléchées sont apparues comme une alternative concise et élégante aux fonctions traditionnelles. déclarations de fonctions. Cependant, le traitement de l'objet arguments dans les fonctions fléchées a suscité une controverse, conduisant à des comportements conflictuels entre différentes plates-formes.

Les recommandations initiales du comité TC39 suggéraient que les fonctions fléchées ne devraient pas avoir leurs propres arguments contraignants, s'appuyant plutôt sur l'objet arguments de la portée parent. Cependant, certains navigateurs (Chrome, Firefox, Node) semblent contredire cette notion, permettant aux fonctions fléchées d'accéder à l'objet arguments de leur portée englobante.

Pour clarifier cette ambiguïté, plongeons-nous dans la documentation officielle :

  • Spécification ES6, Section 14.2.11.1 : "Les expressions de fonctions fléchées sont évaluées comme des fonctions dont leur [[ThisMode]] est défini sur lexical." Cela implique que les fonctions fléchées héritent de l'environnement lexical de leur portée parent.
  • Spécification ES6, Section 18 : "(18 a) Les fonctions fléchées n'ont jamais d'objets arguments." Cette déclaration confirme explicitement que les fonctions fléchées n'ont pas leur propre objet arguments.

Sur la base de ces documents officiels, il est clair que le comportement observé dans Chrome, Firefox et Node est erroné. Les fonctions fléchées ne sont pas destinées à avoir une liaison d'arguments, et s'appuyer sur ce comportement peut conduire à un code peu fiable et déroutant.

Par conséquent, les développeurs doivent adhérer à la sémantique prévue des fonctions fléchées et éviter de s'appuyer sur la présence d'un arguments objet dans leur portée. Cela garantira un comportement cohérent et prévisible sur toutes les plateformes JavaScript.

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