为什么函数内部定义的函数可以在外部调用

来源:2-5 闭包

hunmix

2018-03-30 10:28:26

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <title>test</title>
</head>
<body>
    <script>
        function f1(){
            var n=1;
            add1=function(){
                console.log("add1");
            }
            function add2(){
                console.log("add2");
            }
        }
        var fn=f1();
        add1();
        add2();
    </script>
</body>
</html>

结果如图:

http://img.mukewang.com/climg/5abda0580001d75505030110.jpg

有两个问题:1、为什么内部定义的函数外部可以访问,是什么原理呢?2、为什么第一种定义方式可以访问而第二种不行?

写回答

1回答

怎么都被占用了呢

2018-03-30

add1=function(){

                console.log("add1");

            }

这段代码是将匿名函数赋值给一个变量,函数内用var声明的变量是局部变量,外部不能被访问,这里的add1是全局变量,所以外部可以访问的。

第二种一般当做闭包,来获取fi函数内的局部变量。

0
hunmix
h 非常感谢!
h018-03-30
共1条回复

0 学习 · 4826 问题

查看课程