猿问

关于自执行函数定义函数声明结果输出为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>

在自执行函数中,使用函数声明定义function也还是会变量提升的,既然提升了为什么还是undefind或者说为什么是g is not function?请大神们告知一二,谢谢

MM们
浏览 138回答 2
2回答

ITMISS

你可以用旧版ie执行这段代码,看看结果
随时随地看视频慕课网APP
我要回答