没理解这段代码,请教

var a = 2;
var func = (function() {

var a = 3;
return function() {
    a++;
    console.log(a);
}

})();
func();
func();
请问下这题的结果是啥,以及为何会返回这样的结果?

阅读 2.1k
4 个回答

func等于一个闭包,返回的是一个函数,当func(闭包)执行的时候,闭包中的变量是存放在内存中不会销毁的,此时console.log打印的是闭包中的变量,所以a一直在加,并且跟全局的a没关系

4 5
函数运行在定义时 所以a指的是3的那个a
func 是a++的那个function 所以4 5

典型的闭包,面试基础题,

func=function(){
  a++;//这里a的初始值指向3
  console(a)
}

执行两次的结果分别是4 5

新手上路,请多包涵

结果4,5
闭包问题,外围函数中的a是受保护变量,func中使用的a是外围函数中的受保护的变量a

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题