Lorsque j'exécute la pièce suivante du code JS:
var x = (function () { console.log('Hello x!'); }); var y = function () { console.log('Hello y!'); }; var z = (function () { console.log('Hello z!') return 2; })(); x(); y();
3 Réponses :
Parce que c'est ife:
var x = (function () { console.log('Hello x!'); }); var y = function () { console.log('Hello y!'); }; var z = function () { console.log('Hello z!') return 2; }; z(); x(); y();
OP sait que c'est un ife ( "et comment l'expression de la fonction immédiatement invoquée (ife) interagit-elle avec la variable" Z "?" I>)
"pourrait être réécrit" oui et non. Dans cet exemple z code> est une fonction. Dans l'original
z code> est
2 code>.
var z = (fonction () {renvoie 2;}) () code> n'est pas le même que
var z = fonction () {...}; z (); code>
@EvolutionXBox @AndreReas meilleure chance de réécriture au-dessus du code de sorte qu'il reste la même (oups!) Pour illustrer pourquoi "pourquoi" Bonjour Z! " est imprimé en premier.
Comme la réponse ci-dessus, c'est la manière dont votre code est écrit, la pile d'appels appelle d'abord le NIFE, puis la fonction X, puis la fonction y. Si vous voulez une bonne représentation visuelle, consultez la loupe de Philip Roberts ( http://latentflip.com/loupe/ a>). Il vous permet d'écrire du code et de passer à travers comment cela s'appelle et exécuté. M'a beaucoup aidé lorsque vous essayez de comprendre la séquence d'exécution. p>
Quelle réponse voulez-vous dire? Sur mon écran, votre réponse est top.
Désolé, je devrais juste faire référence à la réponse. La réponse de @ bapafes482.
Le premier I à Iife signifie immédiatement.
C'est pourquoi cette fonction est exécutée en premier.
De plus, le NIFE ne peut pas interagir avec la variable «Z». espère que cela aiderait cela. P> p>
Mais vous pouvez passer des arguments à cela comme ceci: p>
Le mot "immédiatement" signifie "maintenant" ou "tout de suite". En ajoutant le
() code> à la fin de l'expression de fonction, la fonction est immédiatement appelée i> (appelée) et la valeur de retour est la valeur de
z code >.
La vie est immédiatement invoquée (appelée / courante / etc.). Avant X et Y.
Dupliqué possible de Quelle est la (fonction (fonction () {}) () construction dans JavaScript ?