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

作用域链:

//作用域链

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闭包的几种常见形式 ,希望对大家有所帮助,如果大家有任何疑问欢迎给我留言,小编会及时回复大家的!

以上是 JS闭包的几种常见形式实例详解 的全部内容, 来源链接: utcz.com/z/313682.html

回到顶部