(点击上方 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闭包问题当中几乎没什么可以难住你了。 觉得本文对你有帮助?请分享给更多人 北京有治疗白癜风专业医院北京看白癜风哪间医院效果最好
|