2016前端学习(三)

三、闭包生成唯一ID

1
2
3
4
5
6
7
8
var createUniqueId = function () {
"use strict";

var _id = 0;
return function () {
return _id ++;
};
};
1
2
3
4
5
6
var createId = createUniqueId();

createId(); // 0
createId(); // 1
createId(); // 2
createId(); // 3

上述代码挺简单的,但是要理解闭包原理还是蛮复杂的。

所谓闭包,在Javascript高级程序设计书中指有权访问另一个函数作用域中的变量的函数

理解闭包,首先等先理解作用域

所谓作用域主要是指全局作用域和局部作用域,在局部作用域内可以直接读取全局作用域,而全局作用域无法直接读取局部作用域的变量。

那么,如果要在全局作用域中读取局部作用域中的变量呢? 这时,就可以使用闭包。

闭包的好处有:
1、外部作用域可以访问内部作用域的变量
2、可以是变量在内存中持久化