首页 > 为何这样写会导致函数被提前执行?

为何这样写会导致函数被提前执行?

var t=function(){alert("T");}
(function (){
    alert("FUNC");
    t();
})();

我的期望是先弹出FUNC再弹出T
可实际执行结果为,先弹出T,然后抛异常

请问,这段代码,它到底是怎么执行的?
以及,若要实现我所期望的结果,应该如何书写?


var t=function(){alert("T");}; //少了个分号
(function (){
    alert("FUNC");
    t();
})();

语法错误。
一般情况下,;可以省略,当下一行的开始是([时,上一行的结尾不会自动追加;


我一般直接定义函数

function t (){alert("T");}
(function (){
    alert("FUNC");
    t();
})();
【热门文章】
【热门文章】