Quelle est la différence entre les snippets ci-dessous ?
var a = 0;
function b(){
a = 10;
return function a(){};
}
b();
console.log(a); // => 10
y
var a = 0;
function b(){
a = 10;
return
function a(){};
}
b();
console.log(a); // => 0
Cela a quelque chose à voir avec le levage JavaScript, mais ma compréhension du concept donne exactement le résultat inverse.
15 votes
Lorsque vous utilisez
return
sur une rangée de lui-même, c'est ce qu'il fait, retourner et quitter lefunction b()
. Javascript ajoutera automatiquement un;
après elle.2 votes
Les déclarations de fonctions sont traitées avant l'exécution de tout code (ce que l'on appelle le "hoisting"). Par conséquent, peu importe où elles sont placées, elles sont toujours évaluées.
2 votes
Duplicatas possibles : Pourquoi une instruction de retour ne fonctionne-t-elle pas lorsque la valeur de retour se trouve sur une nouvelle ligne ? , délimitation des fonctions et levage y Pourquoi cette déclaration de fonction est-elle créée dans une expression de fonction "non définie" ?