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'; }
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'
Le comportement que nous attendons
var hereOrThere = function () { // function expression return 'here'; }; console.log(hereOrThere()); // alerts 'here' hereOrThere = function () { return 'there'; };
Une fois ce programme compilé, il équivaut à :
var hereOrThere;//申明前置了 hereOrThere = function() { // function expression return 'here'; }; console.log(hereOrThere()); // alerts 'here' hereOrThere = function() { return 'there'; };
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!