没理解这段代码,请教

var a = 2;

var func = (function() {


var a = 3;

return function() {

    a++;

    console.log(a);

}

})();

func();

func();

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


郎朗坤
浏览 500回答 4
4回答

蛊毒传说

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

泛舟湖上清波郎朗

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

呼啦一阵风

典型的闭包,面试基础题,func=function(){  a++;//这里a的初始值指向3  console(a)}执行两次的结果分别是4 5
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript