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

没理解这段代码,请教

没理解这段代码,请教

郎朗坤 2019-03-07 15:14:49
var a = 2;var func = (function() {var a = 3;return function() {    a++;    console.log(a);}})();func();func();请问下这题的结果是啥,以及为何会返回这样的结果?
查看完整描述

4 回答

?
蛊毒传说

TA贡献1895条经验 获得超3个赞

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


查看完整回答
反对 回复 2019-03-18
?
泛舟湖上清波郎朗

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

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

查看完整回答
反对 回复 2019-03-18
?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

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


func=function(){

  a++;//这里a的初始值指向3

  console(a)

}

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


查看完整回答
反对 回复 2019-03-18
  • 4 回答
  • 0 关注
  • 499 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号