猿问

请教,一个 JS 中关于函数提升的问题?

如下代码:

function a() {

    console.log('1')

}    


(function() {

    console.log(a);

    if(1) {

        function a() {

            console.log('2');

        }

    }

})()

运行之后,输出的是undefined。

而去掉 if 条件之后,输出的又是第二个 a 函数

function a() {

    console.log('1')

}    


(function() {

    console.log(a);


    // if(1) {

        function a() {

            console.log(2);

        }

    // }

})()

知道函数有提升,第二段代码,第二个 a 函数会提升到 console.log(a) 这句代码之前,所以运行输出 第二个 a 函数。
可是第一段代码,就搞不明白为啥会输出 undefined 了。

MMMHUHU
浏览 460回答 1
1回答
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答