代码段



function foo(){
var a = 2;
function bar(){
console.log(a);
}
return bar;
}
var baz = foo();
baz();


以上代码段就是闭包。

闭包使得函数可以继续访问定义时的词法作用域。

闭包实质:将内部函数传递到所在的词法作用域以外,内部函数仍然持有对原始定义作用域的引用。

 

once函数的实现:

 



function once(fn) {
let called = false
return function() {
if (!called) {
called = true
fn.apply(this, arguments)
}
}
}


 


作者:孟繁贵