Nous savons que la déclaration de variables sera favorisée :
var a = 1;
//上面一行相当于下面这样:
var a;
a = 1;
Parallèlement, les déclarations de fonctions seront également favorisées :
foo();
function foo(){};
//上面两行相当于下面这样:
var foo;
foo = function (){};
foo()
Alors, lorsqu'il y a à la fois des déclarations de variables et de fonctions, qui arrivera au sommet ? Comment trier ? Par exemple :
var a = 1;
foo();
function foo(){};
Est-ce vrai ?
var a;
var foo;
a = 1;
foo = function(){};
foo();
Parce que j'ai vu cette phrase dans "JAVASCRIPT You Don't Know" et j'étais un peu confus :
Les déclarations de fonctions et les déclarations de variables seront promues. Mais un détail remarquable est que les fonctions sont promues en premier, puis les variables. Les déclarations de fonctions sont hissées avant les variables ordinaires.
Ça sera donc trié comme ceci :
var foo;
foo = function(){};
var a;
a = 1;
foo();
Retrouvez les règles de tri, merci !
Cette affirmation selon laquelle « l'amélioration d'abord » est en fait un malentendu. Ce n'est qu'une apparence superficielle. Les spécifications ne sont pas classées dans un ordre particulier (si vous êtes intéressé par l'implémentation du V8, vous pouvez lire ici).
var
的提升是声明跟赋值分开,function
L'amélioration est toute l'amélioration, alorsÇa deviendra comme ça
Il y a donc l'effet de la promotion de la fonction en premier.
Tout d'abord, on peut le diviser en 4 éléments de contenu
On veut savoir à quoi ressemble le format de tri après promotion ?
La condition connue actuelle est que la déclaration de variable sera promue avant l'affectation de variable, nous pouvons donc mettre la déclaration de variable dans les deux premiers chiffres en premier, quel que soit son ordre interne pour le moment :
Ensuite, déterminons respectivement l’ordre interne des modules de déclaration et d’affectation.
Afin de mener des expériences, nous avons étendu la fonction foo, donc l'ordre actuel est :
Ne vous inquiétez pas de la raison pour laquelle nous l'avons modifié ainsi. Continuons l'expérience. Nous le comprendrons au cours de l'expérience.
Afin de faciliter la compréhension, l'expérience a été menée en deux temps.
Premièrement : nous expérimentons le module de déclaration de variables.
Ensuite : nous expérimentons le module d'affectation de variables.
Faisons l'expérience :
Sur la base des résultats expérimentaux, notre résultat final de classement est :