function funOne(){ // 外部函数 var num = 0; // 局部变量 function funTwo(){ // 内部函数 num++; return num; } return funTwo; } var fun = funOne(); // 返回函数 funTwo以上代码就构成了一个闭包,其实就是函数 fun。
function funOne(){ var num = 0; function funTwo(){ num++; console.log(num); } return funTwo; } var fun = funOne(); fun(); // 输出:1 fun(); // 输出:2 fun(); // 输出:3 fun(); // 输出:4num 是外部函数 funOne() 中的一个变量,它的值在内部函数 funTwo() 中被修改,函数 funTwo() 每执行一次就会将 num 加 1。根据闭包的特点,函数 funOne() 中的变量 num 会一直保存在内存中。
var funOne = (function(){ var num = 0; return function(){ num++; return num; } })(); console.log(funOne()); // 输出:1 console.log(funOne()); // 输出:2 console.log(funOne()); // 输出:3此外,同一个闭包机制可以创建多个闭包函数出来,它们彼此没有联系,都是独立的,如下例所示:
function funOne(i){ function funTwo(){ console.log('数字:' + i); } return funTwo; }; var fa = funOne(110); var fb = funOne(111); var fc = funOne(112); fa(); // 输出:数字:110 fb(); // 输出:数字:111 fc(); // 输出:数字:112
本文链接:http://task.lmcjl.com/news/5089.html