Maison > Questions et réponses > le corps du texte
var a = 1;
function a()
{
console.log(a);
};
a();
Ces lignes de code JS signaleront une erreur lors de l'exécution, mais quelle en est la raison ? Demandez à Dieu de vous expliquer
过去多啦不再A梦2017-05-19 10:31:08
Function est le premier citoyen de JavaScript, il y a donc une promotion de fonction ici. L'implémentation finale du code ci-dessus a le même effet que ce qui suit
function a()
{
console.log(a);
};
var a = 1;
a();
Cela entraînera l'écrasement du nom de la fonction d'origine.
高洛峰2017-05-19 10:31:08
Tout d'abord, parlons de js. Lorsque vous voyez var a = 1, vous devez l'analyser en deux étapes. Tout d'abord, élever var a au sommet de la portée actuelle, puis l'analyser vers le bas jusqu'à ce que a = 1 et commencez à attribuer des valeurs.
C'est le problème des variables et des fonctions ayant le même nom. En termes simples, l'ordre d'analyse du moteur js est le suivant1 Les déclarations de variables et de fonctions sont promues en haut de la portée actuelle → var a ↑ et `function a(. )
{
console.log(a);
}`2. Analysez ensuite le code restant `a=1;
a()`,
怪我咯2017-05-19 10:31:08
C'est parce que la déclaration de fonction sera anticipée
var a = 1;
function a()
{
console.log(a);
};
a();
1) La déclaration de fonction sera en haut
2) La déclaration de variable sera également en haut
3) La déclaration de fonction sera en haut que la déclaration de variable : (la fonction est au-dessus de la variable)
4) Les variables et les instructions d'affectation sont écrites ensemble. Une fois analysées par le moteur js, elles seront divisées en deux parties : la déclaration et l'affectation. La déclaration est placée en haut et l'affectation reste à la position d'origine. 5) Les variables déclarées ne seront pas déclarées à plusieurs reprises.
J'espère que cela vous aidera~var a = function ()
{
console.log(a);
};
var a = 1;
a();
漂亮男人2017-05-19 10:31:08
Beaucoup de gens ont mentionné qu'il s'agissait d'un problème de promotion variable, mais l'explication n'est pas tout à fait correcte. var
L'amélioration se fait par parties et les fonctions sont améliorées dans leur ensemble. Pour information
Ça devrait donc ressembler à ceci :
var a;
function a ()
{
console.log(a);
};
a = 1;
a();