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

La différence entre var foo = function () {} et function foo()

php中世界最好的语言
Libérer: 2018-03-17 13:17:48
original
2236 Les gens l'ont consulté

Cette fois, je vais vous présenter la différence entre var foo = function () {} et function foo() Quelles sont les précautions lors de l'utilisation de var foo = function () {} et function foo. () , ce qui suit est un cas pratique, jetons un coup d'œil.

Un jour alors que j'écrivais du code, j'ai soudainement rencontré ce problème, et je l'ai résumé

JavaScript Le comportement "hoist" des déclarations de fonctions et de variables

En termes simples, si nous utilisons la fonction anonyme

var a = {}

de cette manière, la déclaration de variable a sera " advanced" après la compilation, mais sa mission (c'est-à-dire a) ne sera pas avancée.

C'est-à-dire que la fonction anonyme n'est initialisée que lorsqu'elle est appelée.

Si vous utilisez

function a () {};

, la déclaration de la fonction et son affectation seront avancées après compilation.

C'est-à-dire que le prétraitement du processus de déclaration de fonction est terminé avant que l'ensemble du programme ne soit exécuté, donc tant qu'il est dans la même portée, il est accessible, même s'il est appelé avant la définition .

En regardant un exemple

function hereOrThere() { //function statement
  return 'here';
}
console.log(hereOrThere()); // alerts 'there'
function hereOrThere() {
  return 'there';
}
Copier après la connexion

nous constaterons que l'instruction alert(hereOrThere) sera alert('there') exécutée ! Le comportement ici est en fait très inattendu.La raison principale est le comportement "précoce" des déclarations de fonctions JavaScript. En bref, JavaScript nous permet d'utiliser des variables et des fonctions avant qu'elles ne soient déclarées, et la deuxième définition remplace la première. En d'autres termes, une fois le code ci-dessus compilé, il équivaut à

function hereOrThere() { //function statement
 return 'here';
}
function hereOrThere() {//申明前置了,但因为这里的申明和赋值在一起,所以一起前置
 return 'there';
}
console.log(hereOrThere()); // alerts 'there'
Copier après la connexion

Le comportement que nous attendons

var hereOrThere = function () { // function expression
  return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function () {
  return 'there';
};
Copier après la connexion

Une fois ce programme compilé, il équivaut à :

var hereOrThere;//申明前置了
hereOrThere = function() { // function expression
 return 'here';
};
console.log(hereOrThere()); // alerts 'here'
hereOrThere = function() {
 return 'there';
};
Copier après la connexion

Je pense que vous maîtrisez la méthode après avoir lu le cas dans cet article. Pour des informations plus intéressantes, veuillez prêter attention aux autres articles connexes sur le php chinois. site web!

Lecture recommandée :

Comment fonctionne le chargeur de module javascript

Comment utiliser les générateurs automatiques dans ionic2

Définir la mise à jour automatique et l'acquisition automatique de l'expiration des cookies

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!

Étiquettes associées:
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