JavaScript--闭包(1)
2021-03-11 21:32
标签:ons 匿名 形参 循环 参数 cti style font 注意
JavaScript--闭包(1) 标签:ons 匿名 形参 循环 参数 cti style font 注意 原文地址:https://www.cnblogs.com/absoluteli/p/14092855.htmlfunction count() {
var arr = [];
for (var i=1; i) {
arr.push(function () {
return i * i;
});
}
return arr;
}
var results = count();
var f1 = results[0];
var f2 = results[1];
var f3 = results[2];
f1(); // 16 //此时会执行push里的function,读取变量i时,i的值已经是4了
f2(); // 16
f3(); // 16
function count() {
var arr = [];
for (var i=1; i) {
arr.push((function (n) { //n是形参
return function () { //这个匿名函数就是闭包,将这一整个函数作为返回值返回
return n * n;
}
})(i)); //将实参i传给function(n),立即执行了function(n),执行到return时返回了闭包函数这个整体,所以闭包函数内部并没有执行,由于闭包引用了外部function的变量n,所以外部function被引用的变量的内存在执行完毕后没有被回收
}
return arr;
}
var results = count();
var f1 = results[0];
var f2 = results[1];
var f3 = results[2];
f1(); // 1 //可以看到后面带括号,此时才会执行闭包函数
f2(); // 4
f3(); // 9
function count() {
var arr = [];
for (var i=1; i) {
arr.push(function (n) {
return n * n;
}(i)); //将实参i传给function(n),立即执行
}
return arr;
}
var results = count();
var f1 = results[0];
var f2 = results[1];
var f3 = results[2];
console.log(f1);//1
console.log(f2);//4
console.log(f3);//9
上一篇:VBA调用百度翻译API