Maison > interface Web > js tutoriel > le corps du texte

Comment le comportement des déclarations de fonction dans les instructions If/Else a-t-il changé en JavaScript ?

DDD
Libérer: 2024-10-31 06:16:02
original
172 Les gens l'ont consulté

How Has the Behavior of Function Declarations Within If/Else Statements Changed in JavaScript?

Déclarations de fonctions dans les instructions If/Else : un examen

En JavaScript, les déclarations de fonctions étaient traditionnellement traitées différemment dans les instructions if/else. Avant ES5, une fonction déclarée dans un bloc if était accessible en dehors du bloc, quel que soit l'état du bloc.

<code class="js">var abc = '';
if (1 === 0) {
  function a() {...}
} else if ('a' === 'a') {
  function a() {...}
}
a(); // Accesses the function declared inside one of the if blocks</code>
Copier après la connexion

Ce comportement variait selon les navigateurs et pouvait conduire à des résultats inattendus. Pour résoudre cette incohérence, le mode strict dans ES5 a introduit une règle : les déclarations de fonction doivent être au niveau supérieur d'un script ou d'un module. Les placer dans un bloc entraînerait une erreur de syntaxe.

Cependant, avec l’avènement d’ES2015, le paysage a changé. Dans un environnement JavaScript moderne, les déclarations de fonctions dans les blocs sont désormais valides et limitées à ce bloc. Par exemple, dans le code suivant :

<code class="js">var abc = '';
if (1 === 0) {
  function a() {...}
} else if ('a' === 'a') {
  function a() {...}
}
a(); // Undefined function error</code>
Copier après la connexion

La fonction a est déclarée dans le cadre de l'instruction if, elle n'est donc pas accessible en dehors de celle-ci.

Par conséquent, si vous avez besoin de Si vous définissez une fonction de manière conditionnelle, il est recommandé d'utiliser des expressions de fonction plutôt que des déclarations. Les expressions de fonction peuvent être définies n'importe où dans le code et peuvent capturer les valeurs des variables dans la portée actuelle.

<code class="js">var abc = '';
if (1 === 0) {
  var a = function () {...};
} else if ('a' === 'a') {
  var a = function () {...};
}
a();</code>
Copier après la connexion

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!

source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!