javascript - Quel est l'ordre d'exécution de js?
phpcn_u1582
phpcn_u1582 2017-06-26 10:58:23
0
3
712

1. Je ne comprends pas l'ordre d'exécution de js. Exécutez le code suivant Lorsque l'alerte est lancée pour la première fois, une erreur ne doit-elle pas être signalée directement ? Pourquoi cette fonction s'affiche-t-elle d'abord, puis 10, puis 3, et enfin une erreur est-elle signalée ? Une erreur ne devrait-elle pas être signalée dès le début ?

alert(a)
a();
var a=3;
function a(){
alert(10)
}
alert(a)
a=6;
a()

phpcn_u1582
phpcn_u1582

répondre à tous(3)
ringa_lee

J'ai demandé à mes camarades de classe et découvert pourquoi cela s'est produit. Tout d'abord, nous devons comprendre les concepts
1 En js, les déclarations de variables et les déclarations de fonctions sont faites à l'avance, et les déclarations de fonctions sont meilleures que les déclarations de variables. Par conséquent, alert(a) avant de déclarer a ne signalera pas d’erreur. Aussi, dans la première alerte, la fonction a apparaît, pas la variable a.
2. La deuxième alerte, il va sans dire, exécute simplement la fonction a.
3. La troisième alerte, le résultat est 3, car var a=3; a été exécuté avant de s'exécuter ici. Donc a devient 3. var a=3;。所以a变成了3。
4.最后报错是因为,执行到a();a进行了两次赋值,第一次是var a=3;,第二次是a=6;4. La dernière erreur a été signalée car a(); a a été attribué deux fois, la première fois était var a=3; et la deuxième fois était a=6;, mais quoi qu'il en soit, a n'est pas une fonction, donc une erreur est signalée.

伊谢尔伦

La première sortie function 是因为作用域提升(hoisting)。
第二个输出 10 是第二行 a() 的输出。
第三个输出 3 是倒数第三行 alert(a) 的输出。
最后一个报错是来自最后一行 a()。因为这时候 a 被重新赋值为数字 6,已经不是 function 了。执行 a() signalera bien sûr une erreur.

某草草

La déclaration de variable est-elle promue ? N'oubliez pas les règles suivantes.

http://zonxin.github.io/post/...

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal