JS闭包的几种常见形式实例详解
作用域链:
//作用域链 vara=1; functiontest(){ varb=2; returna; } alert(test());//弹出1; alert(b);//不能获取b //scopechain vara=1; functiontest(){ varb=2; functiontest1(){ varc=3; alert(a); alert(b); alert(c); } test1(); } test();//弹出1,弹出2,弹出3;
词法作用域:
//词法作用域; functionf1(){ vara=12; returnf2(); } functionf2(){ returna; } alert(f1());//并不能获取a,a在f2()中并未定义; functionf1(){ vara=1; returnf2(); } functionf2(){ varb=3; alert(b); returna; } alert(f1());//弹出3,a在f2()中未定义 functionf1(){ vara=1; returnf2(); } functionf2(){ varb=3; alert(b); returna; } alert(f1());//弹出3,a在f2()中未定义,undefined vara=55; alert(f1());//弹出3,弹出55
如何通过闭包突破全局作用域链——几种常见形式
//通过闭包突破全局作用域链 functionf(){ vara="sun"; returnfunction(){ returna; } } vartest=f(); alert(test());//弹出sun varn; functionf(){ vara="sun"; n=function(){ returna; } } f(); alert(n());//弹出sun functionf(param){ varn=function(){ returnparam; }; param++; returnn; } vartest=f(45); alert(test());//弹出46;
总结
以上所述是小编给大家介绍的JS闭包的几种常见形式,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!