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啦。
添加回答
举报
0/150
提交
取消