js的闭包对于大家实际上并不陌生,但是真正敢说自己完全理解的人并不多。笔者在网上看到分析闭包的文章非常多,篇幅用的非常多,但是实际上分析的并不到位,或者根本就是不正确的。我有时候都在想,写这些文章的人自己未必真的理解了。今天我就为大家说到说到js的闭包,看完你百分百的能够理解。
说闭包之前,我们先要说一个js的概念
js的变量不是传统意义的变量,是一个广义的概念
例如:
1、var i=0;
2、var str="china";
3、var fun=function(){...}
第1个和第2个大家非常好理解,第3个简单的解释一下,它代表的是一个函数表达式,看到了吗?变量可以是一个函数,它实际上就是一个函数,要使用它直接就是fun();
如果想要了解更多的函数表达式的概念,大家可以去查一下相关资料,网上资料很多,也很容易看得懂。我就不多说了,OK!我讲闭包之前先要掌握的概念就是这么多!
进入正题:
网上使用最多的一个例子如:
function box(){ var arr = []; for(var i=0;i<5;i++){ arr[i] = function(){ return i; } } return arr; }