程宇寒 2019-12-11 22:54 采纳率: 100%
浏览 567
已采纳

JavaScript中如何才能在外部访问到立即执行匿名函数中的变量和函数?

立即执行匿名函数中的变量和函数怎么访问?
图片说明
图片说明

如何才能在外部调用fn1()函数和fn2()函数

如何才能在外部访问到age变量
图片说明

图片说明

这是我的原贴

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JavaScript中立即执行的匿名函数</title>
<script type="text/javascript">
var hometown = '江西省赣州市于都县';
console.log(hometown);
(function (){
    console.log('我是一个匿名函数' + hometown);
})();

(function (){
    var age = 24;
    console.log('hello,我是一个匿名函数');
    function fn1(){
        console.log('我是fn1函数');
    }
    fn1();
    function fn2(){
        console.log('我是fn2函数');
    }
    fn2();
})();
//涉及到闭包的知识
//立即执行匿名函数中的变量和函数怎么访问?
//如何才能在外部调用fn1()函数和fn2()函数
fn1(); //报错Uncaught ReferenceError: fn1 is not defined
// fn2();
//如何才能在外部访问到age变量
// console.log(age); //报错Uncaught ReferenceError: age is not defined
</script>
<script type="text/javascript">
console.log('我的家乡在' + hometown);
</script>

</head>
<body style="background-color: #CCE8CF;">
    <h3 style="color: #cd1636;">
    JavaScript中立即执行的匿名函数
    </h3>
</body>
</html>
  • 写回答

3条回答

  • Kuukiliselessness 2019-12-12 19:35
    关注

    把参数返回出来赋值 就可以在外面调用

    let dd = (function (){
        var age = 24;
        console.log('hello,我是一个匿名函数');
        function fn1(){
                console.log('我是fn1函数');
        }
        fn1();
        function fn2(){
                console.log('我是fn2函数');
        }
        fn2()
        return fn2
    })() //匿名函数执行与否只跟最后有没有这个 '()'有关系
    
    dd()
    
    

    另外如果你想调用其他函数 就必须把它们的返回出来并赋值给某个变量,
    你可以理解为 匿名函数内是一个封闭的小房子 如果你要别人能找到里面的东西只能递出一个纸条(也就是地址指针。return的 fn2 其实是fn2的指针,让拿到这个指针的可以调用fn2)。
    如果这个函数运行结束里面的东西都没有跟外界有交互(也就是外界没有谁保存了里面东西的指针),里面的东西都会被销毁。
    想要调用其他的函数 就要一起返回出去 或者 赋值给外面的变量

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 已采纳回答 3月21日

悬赏问题

  • ¥15 YoloV5 第三方库的版本对照问题
  • ¥15 请完成下列相关问题!
  • ¥15 drone 推送镜像时候 purge: true 推送完毕后没有删除对应的镜像,手动拷贝到服务器执行结果正确在样才能让指令自动执行成功删除对应镜像,如何解决?
  • ¥15 求daily translation(DT)偏差订正方法的代码
  • ¥15 js调用html页面需要隐藏某个按钮
  • ¥15 ads仿真结果在圆图上是怎么读数的
  • ¥20 Cotex M3的调试和程序执行方式是什么样的?
  • ¥20 java项目连接sqlserver时报ssl相关错误
  • ¥15 一道python难题3
  • ¥15 牛顿斯科特系数表表示