Maison interface Web js tutoriel Fonctions fléchées => Quel est le problème avec les fonctions classiques ?

Fonctions fléchées => Quel est le problème avec les fonctions classiques ?

Nov 25, 2024 am 11:32 AM

Arrow Functions => Qu'est-ce qui ne va pas avec les standards ? Qu'est-ce qui ne va pas avec les standards ?" />

Si vous développez vos connaissances en JavaScript et que vous vous demandez pourquoi ils ajouteraient des fonctions fléchées dans ECMAScript 2015 (ES6), vous n'êtes pas seul. En développant ma connaissance de la langue, de ses subtilités et de ses bizarreries, je me suis posé la même question. Dans cet article, je présenterai les différences, les avantages et les raisons pour lesquelles il a été ajouté et quand vous devriez l'utiliser.

Parlons des différences

Avant l'introduction des fonctions fléchées, les fonctions devaient être déclarées dans le format traditionnel comme ci-dessous :

function add(x, y) {
  return x + y;
}
Copier après la connexion
Copier après la connexion

ou déclaré comme expression :

const addFunction = function add(x, y) {
  return x + y;
}
Copier après la connexion

avec l'introduction des fonctions fléchées, cela peut s'écrire :

const addFunction = (x,y) => x + y
Copier après la connexion

Syntaxe concise

À partir de l'exemple ci-dessus, nous pouvons facilement voir qu'en utilisant une fonction fléchée et en tirant parti de sa fonction de retour implicite, la fonction peut être rapidement refactorisée en une seule ligne. Le code résultant est plus concis, plus propre et plus facile à lire, ce qui permet un développement plus fluide et un débogage plus rapide.

Levage

Le runtime JavaScript hissera par défaut toutes les fonctions et déclarations de variables au sommet de leur portée lors de la création du contexte d'exécution. Par exemple, dans la portée globale, cela garantit que toutes les fonctions et variables déclarées seront disponibles pour toutes les fonctions appelées ultérieurement. Cependant, les fonctions fléchées ne sont jamais levées, permettant ainsi un meilleur contrôle sur l'emplacement précis de l'endroit où une fonction est exécutée et sur les variables auxquelles elle a accès.

Contexte

Chaque fois qu'une fonction JavaScript est exécutée, elle crée un contexte d'exécution qui comprend des informations sur l'environnement dans lequel la fonction s'exécute, y compris la valeur de this. Alors qu'une fonction traditionnelle est exécutée dans son propre contexte, une fonction flèche héritera toujours du contexte de la fonction qui l'a appelée.
En utilisant le code ci-dessous :

class Person {
    constructor(){
        this.name = "George";
        this.greetings = ["Good Morning,","Hello!","Howdy!"];
    }

    printGreetings(){
        this.greetings.forEach(function print(greet){
            console.log(`${greet} ${this.name}`);
        });
    }
}

let person = new Person();
person.printGreetings();
Copier après la connexion

nous obtiendrions une erreur disant : Impossible de lire la propriété 'forEach' de undefined, car bien que la fonction printGreetings soit dans le contexte de la classe Person et hérite de son contexte, néanmoins la fonction forEach (même si son une fonction JavaScript intégrée) s'exécute dans son propre contexte qui ne contient pas la propriété this.name, ce qui entraîne une recherche erreur.

Cependant, une fonction flèche ne s'exécutera jamais dans son propre contexte, et en réécrivant la fonction ci-dessus à l'aide d'une fonction flèche...

printGreetings(){
    this.greetings.forEach((greet) => {
        console.log(`${greet} ${this.name}`);
    });
}
Copier après la connexion

le résultat sera comme prévu

function add(x, y) {
  return x + y;
}
Copier après la connexion
Copier après la connexion

Résumé

Pour résumer les avantages des fonctions fléchées ; ils permettent un code plus court et plus concis ; offre un retour implicite du code du bloc fonctionnel ; ne remonte pas en haut du contexte d'exécution et conserve son emplacement exact dans le code ; enfin, ils héritent du contexte de la fonction qui l'a appelé sans exécuter son propre contexte, permettant une utilisation plus prévisible de ce mot-clé.

J'espère que cet article vous a aidé à mieux comprendre les différences et les avantages des fonctions traditionnelles par rapport à la fonction flèche, et vous a permis de faire un pas de plus dans votre parcours JavaScript !

Lectures complémentaires :
Blog Dmitri Pavlutin - Différences entre les fonctions fléchées et régulières
Documents de référence MDN - Fonctions fléchées

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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Que dois-je faire si je rencontre l'impression de code brouillé pour les reçus en papier thermique frontal? Apr 04, 2025 pm 02:42 PM

Des questions et des solutions fréquemment posées pour l'impression de billets thermiques frontaux pour le développement frontal, l'impression de billets est une exigence commune. Cependant, de nombreux développeurs mettent en œuvre ...

Démystifier javascript: ce qu'il fait et pourquoi c'est important Démystifier javascript: ce qu'il fait et pourquoi c'est important Apr 09, 2025 am 12:07 AM

JavaScript est la pierre angulaire du développement Web moderne, et ses principales fonctions incluent la programmation axée sur les événements, la génération de contenu dynamique et la programmation asynchrone. 1) La programmation axée sur les événements permet aux pages Web de changer dynamiquement en fonction des opérations utilisateur. 2) La génération de contenu dynamique permet d'ajuster le contenu de la page en fonction des conditions. 3) La programmation asynchrone garantit que l'interface utilisateur n'est pas bloquée. JavaScript est largement utilisé dans l'interaction Web, les applications à une page et le développement côté serveur, améliorant considérablement la flexibilité de l'expérience utilisateur et du développement multiplateforme.

Qui est payé plus de python ou de javascript? Qui est payé plus de python ou de javascript? Apr 04, 2025 am 12:09 AM

Il n'y a pas de salaire absolu pour les développeurs Python et JavaScript, selon les compétences et les besoins de l'industrie. 1. Python peut être davantage payé en science des données et en apprentissage automatique. 2. JavaScript a une grande demande dans le développement frontal et complet, et son salaire est également considérable. 3. Les facteurs d'influence comprennent l'expérience, la localisation géographique, la taille de l'entreprise et les compétences spécifiques.

JavaScript est-il difficile à apprendre? JavaScript est-il difficile à apprendre? Apr 03, 2025 am 12:20 AM

Apprendre JavaScript n'est pas difficile, mais c'est difficile. 1) Comprendre les concepts de base tels que les variables, les types de données, les fonctions, etc. 2) Master la programmation asynchrone et les implémenter via des boucles d'événements. 3) Utilisez les opérations DOM et promettez de gérer les demandes asynchrones. 4) Évitez les erreurs courantes et utilisez des techniques de débogage. 5) Optimiser les performances et suivre les meilleures pratiques.

Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido?
ou:
Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Comment réaliser des effets de défilement de parallaxe et d'animation des éléments, comme le site officiel de Shiseido? ou: Comment pouvons-nous réaliser l'effet d'animation accompagné d'un défilement de page comme le site officiel de Shiseido? Apr 04, 2025 pm 05:36 PM

La discussion sur la réalisation des effets de défilement de parallaxe et d'animation des éléments dans cet article explorera comment réaliser le site officiel de Shiseido (https://www.shiseido.co.jp/sb/wonderland/) ...

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Comment fusionner les éléments du tableau avec le même ID dans un seul objet en utilisant JavaScript? Apr 04, 2025 pm 05:09 PM

Comment fusionner les éléments du tableau avec le même ID dans un seul objet en JavaScript? Lors du traitement des données, nous rencontrons souvent la nécessité d'avoir le même ID ...

L'évolution de JavaScript: tendances actuelles et perspectives d'avenir L'évolution de JavaScript: tendances actuelles et perspectives d'avenir Apr 10, 2025 am 09:33 AM

Les dernières tendances de JavaScript incluent la montée en puissance de TypeScript, la popularité des frameworks et bibliothèques modernes et l'application de WebAssembly. Les prospects futurs couvrent des systèmes de type plus puissants, le développement du JavaScript côté serveur, l'expansion de l'intelligence artificielle et de l'apprentissage automatique, et le potentiel de l'informatique IoT et Edge.

La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? La différence dans Console.Log de sortie Résultat: Pourquoi les deux appels sont-ils différents? Apr 04, 2025 pm 05:12 PM

Discussion approfondie des causes profondes de la différence de sortie Console.log. Cet article analysera les différences dans les résultats de sortie de la fonction Console.log dans un morceau de code et expliquera les raisons derrière. � ...

See all articles