请用自己的话简述:什么是闭包?闭包的作用是什么?我先说说我的理解,(说的有误,请狮子们指正)。在JavaScript权威指南第五版那本书中说了这么一句话,所有的函数都可以说是一个闭包(因为所有的函数都
请用自己的话简述:
什么是闭包?闭包的作用是什么?
我先说说我的理解,(说的有误,请狮子们指正)。在JavaScript权威指南第五版那本书中说了这么一句话,所有的函数都可以说是一个闭包(因为所有的函数都可以访问到全局作用域的变量),所以闭包的定义可以说成:函数内部可以访问函数外部变量的函数就可以称为闭包
function f(){ var local='变量'; function foo(){ console.log(local); } foo();}f();
这就是一个闭包,有的人说,闭包需要函数嵌套函数,然后返回一个函数这样才称为一个闭包。
function f2(){ var local=1; function bar(){ local++; return local; } return bar;}f2();
为什么要return bar??
local和bar()构成了一个闭包,如果不使用return你就无法使用这个闭包。把return bar改成window.bar=bar;也是一样的,只要让外面可以访问到这个bar函数就可以了。
为什么要嵌套函数??因为需要局部变量。为什么要用局部变量?如果我们用全局变量,所有的人都可以直接访问这个全局变量,那怎么办?我们只能用局部变量。但是用了局部变量别人又访问不到,怎么办?可以暴露一个访问器,让别人间接访问。