JS进阶-闭包的几种常见形式
Posted 喵嘻嘻
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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进阶-闭包的几种常见形式的主要内容,如果未能解决你的问题,请参考以下文章