函数闭包的优势和特点
- 减少了全局变量的个数,可以有效减少命名冲突.原因是包在里面的变量对于外面来说是不可见的,他们的作用域近局限在匿名函数的函数体内
- 这种方式可以保存闭包外面的变量的状态,这个特点还是举个例子比较易懂:
1 | function fn() { |
上面代码的for循环一共两次,我们本来的目的是每隔两秒钟把每一次循环的索引(也就是i)输出,我们期待它应该输出:0和1,但是实际输出结果却是两次都是1
使用了闭包之后,我们会把循环中每一次i值的状态都保存下来,如下代码所示:
1 | function fn() { |
这次我们得到了正确的结果:0和1