时间:2017-6-9来源:本站原创作者:佚名

(点击上方   alrt(objct.gtNamFunc()());//ThWindow

varnam="ThWindow";

varobjct={

nam:"MyObjct",

gtNamFunc:function(){

varthat=this;

rturnfunction(){

rturnthat.nam;

};

}

};

alrt(objct.gtNamFunc()());//MyObjct

functionfun(n,o){

consol.log(o)

rturn{

fun:function(m){

rturnfun(m,n);

}

};

}

vara=fun(0);a.fun(1);a.fun(2);a.fun(3);//undfind,?,?,?

varb=fun(0).fun(1).fun(2).fun(3);//undfind,?,?,?

varc=fun(0).fun(1);c.fun(2);c.fun(3);//undfind,?,?,?

//问:三行a,b,c的输出分别是什么?

这是一道非常典型的JS闭包问题。其中嵌套了三层fun函数,搞清楚每层fun的函数是那个fun函数尤为重要。

//答案:

//a:undfind,0,0,0

//b:undfind,0,1,2

//c:undfind,0,1,1

都答对了么?如果都答对了恭喜你在js闭包问题当中几乎没什么可以难住你了。

觉得本文对你有帮助?请分享给更多人









































北京有治疗白癜风专业医院
北京看白癜风哪间医院效果最好

转载请注明原文网址:http://www.gzdatangtv.com/cksc/7048.html

------分隔线----------------------------