js函数声明的疑问

为什么第一个fn()执行结果是2 而不是undefined?

(function(){

    fn();

    var fn=function(){

        alert(1);

    };

    fn();

    function fn(){

        alert(2);

    };

})()


慕姐8265434
浏览 449回答 1
1回答

萧十郎

在预编译阶段,函数声明提升优先于变量声明提升的。// 预编译阶段function fn(){    alert(2);};var fn;// 执行阶段fn();    // 此时结果为 2fn = function() {    alert(1);}fn();    // 此时结果为 1
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript