关于JS闭包的一个疑惑

       function f1() {

            var n = 999;

            f2 = function () {

                n += 1;

                console.log(n);

            }

        }

        f1();

        f2();

如上代码中,定义了一个函数f1,内部又定义了一个匿名函数(也就是闭包),并且赋值给f2,按理来说,f2前面不是要加var标示来声明一个变量吗?但是我加上var后,却报错了,提示错误:f2 is not defined。为什么呢?另外,为什么上面代码在全局环境中能够访问在f1内部定义的f2?一共两个疑惑,先谢了。


MYYA
浏览 308回答 1
1回答

qq_笑_17

你的两个疑惑其实都是一个问题。f2没有写var的时候,相当于定义了一个全局变量,所以你当然可以在外部访问f2;f2写上var之后,它就成了f1私有的了,当然就不能在外面访问f2啦。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript