javascript - Wie ist die Ausführungsreihenfolge von js?
phpcn_u1582
phpcn_u1582 2017-06-26 10:58:23
0
3
646

1. Ich verstehe die Ausführungsreihenfolge von js nicht. Wenn die Warnung zum ersten Mal gestartet wird, sollte ein Fehler nicht gemeldet werden. Warum wird zuerst diese Funktion angezeigt, dann 10, dann 3 und schließlich wird ein Fehler gemeldet? Sollte ein Fehler nicht von Anfang an gemeldet werden?

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

phpcn_u1582
phpcn_u1582

Antworte allen(3)
ringa_lee

问了下同学,知道了为什么会出现那样的情况,首先要明白的概念
1.js中,变量声明和函数声明是会提前的,并且函数声明会优于变量声明。所以,在声明a之前alert(a),并不会报错。以及,第一个alert,出现的是a这个function,并不是变量a。
2.第二个alert,无需多言,只是执行a这个函数。
3.第三个alert,结果是3,因为运行到了这里之前,执行了 var a=3;。所以a变成了3。
4.最后报错是因为,执行到a();a进行了两次赋值,第一次是var a=3;,第二次是a=6;,但是无论怎样,a都不是函数,所以报错了。

伊谢尔伦

第一个输出 function 是因为作用域提升(hoisting)。
第二个输出 10 是第二行 a() 的输出。
第三个输出 3 是倒数第三行 alert(a) 的输出。
最后一个报错是来自最后一行 a()。因为这时候 a 被重新赋值为数字 6,已经不是 function 了。执行 a() 当然会报错。

某草草

变量声明提升么,记住下面几条规则就好了。

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

Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!