搜索
您的当前位置:首页正文

JS闭包的几种常见形式实例详解

2020-11-27 来源:步旅网

作用域链:

//作用域链
 var a = 1;
 function test() {
 var b =2;
 return a;
 }
 alert(test());//弹出1;
 alert(b);//不能获取b
//scope chain
 var a = 1;
 function test() {
 var b = 2;
 function test1() {
 var c = 3;
 alert(a);
 alert(b);
 alert(c);
 }
 test1();
 }
 test();//弹出1,弹出2,弹出3;

词法作用域:

//词法作用域;
 function f1() {
 var a = 12;
 return f2();
 }
 function f2() {
 return a;
 }
 alert(f1());//并不能获取a,a在f2()中并未定义;
function f1() {
 var a = 1;
 return f2();
 }
 function f2() {
 var b = 3;
 alert(b);
 return a;
 }
 alert(f1());//弹出3,a在f2()中未定义

function f1() {
 var a = 1;
 return f2();
 }
 function f2() {
 var b = 3;
 alert(b);
 return a;
 }
 alert(f1());//弹出3,a在f2()中未定义,undefined
 var a=55;
 alert(f1());//弹出3,弹出55

如何通过闭包突破全局作用域链——几种常见形式

//通过闭包突破全局作用域链
 function f() {
 var a = "sun";
 return function () {
 return a;
 }
 }
 var test = f();
 alert(test());//弹出sun
var n;
function f() {
 var a = "sun";
 n = function () {
 return a;
 }
}
f();
alert(n());//弹出sun
 function f(param) {
 var n =function () {
 return param;
 };
 param++;
 return n;
 }
 var test = f(45);
 alert(test());//弹出46;

总结

以上所述是小编给大家介绍的JS闭包的几种常见形式 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

Top