鍍金池/ 問答/HTML/ 關(guān)于自執(zhí)行函數(shù)定義函數(shù)聲明結(jié)果輸出為undefined的問題

關(guān)于自執(zhí)行函數(shù)定義函數(shù)聲明結(jié)果輸出為undefined的問題

今天看到個題目,很疑惑,一直沒想到答案,題目是這樣的:

<script>
        function g() {
            console.log(123)
            return true
        }
        ;(function(){
            console.log(g)    //undefined
            console.log(g())    //g is not function
            if(g) {
                function g() {
                    console.log(456)
                    return false
                }
            }
        })()
        console.log(g())
    </script>

在自執(zhí)行函數(shù)中,使用函數(shù)聲明定義function也還是會變量提升的,既然提升了為什么還是undefind或者說為什么是g is not function?請大神們告知一二,謝謝

回答
編輯回答
爛人

塊級作用域

建議看下這個,里面詳細(xì)有講這個問題,與瀏覽器實現(xiàn)與歷史遺留兼容有關(guān)

2018年4月26日 16:51
編輯回答
失心人

你可以用舊版ie執(zhí)行這段代碼,看看結(jié)果

2017年9月27日 00:29
編輯回答
不舍棄

函數(shù)在新版瀏覽器是塊級作用域的 有些老得不是

2017年8月19日 02:39