Maison > Questions et réponses > le corps du texte
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()
ringa_lee2017-06-26 11:00:23
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;< /code >, mais quoi qu'il en soit, a n'est pas une fonction, donc une erreur est signalée.
伊谢尔伦2017-06-26 11:00:23
La première sortie function
是因为作用域提升(hoisting)。
第二个输出 10 是第二行 a()
的输出。
第三个输出 3 是倒数第三行 alert(a)
的输出。
最后一个报错是来自最后一行 a()
。因为这时候 a
被重新赋值为数字 6
,已经不是 function
了。执行 a()
signalera bien sûr une erreur.
某草草2017-06-26 11:00:23
La déclaration de variable est-elle promue ? N'oubliez pas les règles suivantes.
http://zonxin.github.io/post/...