Maison >interface Web >js tutoriel >Quelle est la différence entre les déclarations de fonction et les expressions en JavaScript ?

Quelle est la différence entre les déclarations de fonction et les expressions en JavaScript ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-17 12:03:26656parcourir

What's the Difference Between Function Declarations and Expressions in JavaScript?

Comprendre les déclarations de fonction et les expressions en JavaScript

Question : Expliquez la différence entre les déclarations de fonction et les expressions de fonction en JavaScript.

Réponse :

Les déclarations et expressions de fonctions sont de deux manières de création de fonctions en JavaScript.

Déclaration de fonction :

function foo() { return 5; }
  • Une déclaration de fonction se charge immédiatement dans le contexte d'exécution avant qu'un code ne soit exécuté.
  • Il est accessible depuis n'importe où dans le script, quelle que soit sa position dans le code.

Expression de fonction anonyme :

var foo = function() { return 5; }
  • Une expression de fonction anonyme crée une fonction qui n'est pas affectée à un nom spécifique.
  • Sa portée est limitée au bloc englobant où il se trouve créé.

Expression de fonction nommée :

var foo = function foo() { return 5; }
  • Une expression de fonction nommée est similaire à une expression de fonction anonyme, sauf qu'elle inclut un nom pour la fonction.
  • Le nom n'est visible que dans le cadre de l'encadrant block.

Différences du navigateur :

Les déclarations de fonction ont toujours été chargées dans le contexte d'exécution avant tout code. Cependant, les expressions de fonction provoquaient certaines incohérences dans les navigateurs. Plus précisément, dans les versions antérieures de Safari, l'expression de fonction suivante renvoyait une erreur :

var foo = function foo() { return 5; }

Ce problème a depuis été résolu et tous les principaux navigateurs traitent désormais les expressions de fonction de manière cohérente.

Clarification supplémentaire :

Les expressions de fonction sont chargées paresseusement, ce qui signifie qu'elles ne sont chargées que lorsque l'interpréteur atteint la ligne de code où elles sont créées. Cela peut entraîner des problèmes si vous tentez d'appeler une expression de fonction avant son chargement. Les déclarations de fonctions, quant à elles, sont toujours accessibles car elles sont chargées avant toute exécution de code.

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