您的位置:首页 > Web前端 > JavaScript

js 闭包的定义以及应用实例

2017-09-26 15:38 691 查看
参考文档 http://www.ruanyifeng.com/blog/2009/08/learning_javascript_closures.html

定义:

能够读取其他函数内部定义的变量的函数,

在js 语言中,只有子函数才可以读取函数内部的变量  , 所以闭包就是定义在一个函数内部的函数

备注:

a. 可以用闭包实现private, 某个变量只有内部可以使用但是外部无法访问,(js没有类的概念)

b. 闭包都是延迟执行以及放在内存中的, 

eg:

实现封装一个私有变量

function createCounter(initer) {
var count;
if (arguments.length === 0) {
count = 0;
} else {
count = initer;
}

return {
inc: function () {
count +=1;
return count;
}
};
}

var c1 = createCounter();
console.log(c1.inc());
console.log(c1.inc());
console.log(c1.inc());

var c2 = createCounter(10);
console.log(c2.inc());
console.log(c2.inc());
console.log(c2.inc());


 不是立即执行的例, 如要c1() c2()的时候才会执行 

function count() {
var arr = [];
for(var i=1; i<=3; i++) {
arr.push(
function () {
return i*i;
}
);
}

return arr;
}

var collection = count();
var c1 = collection[0];
var c2 = collection[1];
var c3 = collection[2];
console.log(c1()); // 16
console.log(c2()); // 16
console.log(c3()); // 16
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: