JS中定义函数的两种方式哪个优先级高·引出变量和函数声明的运行顺序

在JS中如果同时用变量和函数声明相同名字的函数,谁会先执行呢?

 function foo() {
    alert(2);
 }

 var foo = function() {
     alert(1);
 }

foo();

执行一下会发现alert弹出1,为什么是这样的呢?下面解释下原因。

因为在代码解析运行期间,变量的声明被提到当前作用域的最顶端,其次是函数的声明,所以就变成了:

var foo;

 function foo() {
    alert(2);
 }

foo = function() {
     alert(1);
 }

这样后面的声明就把前面的声明复盖了,所以调用foo()时执行了后面的函数内容

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章