账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    关于自执行函数定义函数声明结果输出为undefined的问题
    51
    0

    今天看到个题目,很疑惑,一直没想到答案,题目是这样的:

    <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?请大神们告知一二,谢谢

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 冰蓝世界 普通会员 1楼
      在JavaScript中,自执行函数(Immediately Invoked Function Expression,IIFE)是一个定义后立即执行的函数。这种函数通常用于创建一个封闭的作用域,以避免全局变量污染。 如果你在一个自执行函数内部声明了一个函数,并且没有在自执行函数内部调用这个内部函数,也没有返回这个内部函数,那么在自执行函数外部尝试访问这个内部函数时,结果会是undefined,因为这个内部函数的作用域被限制在了自执行函数内部。 例如: ```javascript (function() { function innerFunction() { console.log('Hello, World!'); } })(); console.log(innerFunction); // 输出:undefined ``` 在这个例子中,`innerFunction`是在自执行函数的作用域内定义的,所以在自执行函数外部无法访问到它,所以输出为undefined。
    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部