Maison > interface Web > js tutoriel > Comment les déclarations de fonction se comportent-elles dans les instructions if/else en JavaScript ?

Comment les déclarations de fonction se comportent-elles dans les instructions if/else en JavaScript ?

Linda Hamilton
Libérer: 2024-11-03 01:58:03
original
420 Les gens l'ont consulté

How Do Function Declarations Behave Within if/else Statements in JavaScript?

Déclarations de fonctions dans les instructions if/else

Lorsque des déclarations de fonctions sont rencontrées dans des instructions if/else, leur traitement peut varier en fonction du JavaScript environnement. Dans l'extrait de code fourni, les déclarations de fonction sont définies à l'intérieur de chaque branche if/else :

var abc = '';
if (1 === 0) {
  function a() {
    abc = 7;
  }
} else if ('a' === 'a') {
  function a() {
    abc = 19;
  }
} else if ('foo' === 'bar') {
  function a() {
    abc = 'foo';
  }
}
a();
document.write(abc); // Expected output: foo
Copier après la connexion

Sous ECMAScript 5 (ES5), en mode non strict, le code ci-dessus présente un comportement imprévisible. Différents navigateurs et moteurs gèrent différemment les déclarations de fonctions dans les blocs.

Cependant, dans ECMAScript 2015 (ES2015) et versions ultérieures, les déclarations de fonctions sont autorisées dans les blocs. Les déclarations de fonctions dans ces blocs sont limitées au bloc. Dans l'extrait de code, la fonction a est déclarée dans le bloc if le plus interne. Par conséquent, il n'est pas défini dans la portée globale, entraînant une erreur de fonction non définie :

if ('foo' === 'bar') {
  function a() {
    abc = 'foo';
  }
}
a(); // Error: a is not defined
Copier après la connexion

Pour la définition de fonction conditionnelle, il est recommandé d'utiliser des expressions de fonction au lieu de déclarations :

var a = 'foo' === 'bar' ? function() {
  abc = 'foo';
} : function() {
  abc = 19;
};
a();
document.write(abc); // Expected output: 19
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal