在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ 沒理解這段代碼,請教

沒理解這段代碼,請教

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

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

})();
func();
func();
請問下這題的結(jié)果是啥,以及為何會返回這樣的結(jié)果?

回答
編輯回答
孤慣

4 5
函數(shù)運行在定義時 所以a指的是3的那個a
func 是a++的那個function 所以4 5

2017年12月25日 00:04
編輯回答
放開她

func等于一個閉包,返回的是一個函數(shù),當(dāng)func(閉包)執(zhí)行的時候,閉包中的變量是存放在內(nèi)存中不會銷毀的,此時console.log打印的是閉包中的變量,所以a一直在加,并且跟全局的a沒關(guān)系

2017年6月19日 17:13
編輯回答
墨染殤

典型的閉包,面試基礎(chǔ)題,

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

執(zhí)行兩次的結(jié)果分別是4 5

2018年3月14日 00:07
編輯回答
互擼娃

結(jié)果4,5
閉包問題,外圍函數(shù)中的a是受保護變量,func中使用的a是外圍函數(shù)中的受保護的變量a

2017年5月31日 13:22