为了账号安全,请及时绑定邮箱和手机立即绑定

关于JS闭包的一个疑惑

关于JS闭包的一个疑惑

MYYA 2019-02-15 18:16:55
       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?一共两个疑惑,先谢了。
查看完整描述

1 回答

?
qq_笑_17

TA贡献1818条经验 获得超7个赞

你的两个疑惑其实都是一个问题。
f2没有写var的时候,相当于定义了一个全局变量,所以你当然可以在外部访问f2;
f2写上var之后,它就成了f1私有的了,当然就不能在外面访问f2啦。

查看完整回答
反对 回复 2019-02-19
  • 1 回答
  • 0 关注
  • 292 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信