标签:自己 fun 组合 UNC code 返回 输出 foo 变量
闭包指的是函数与定义该函数环境的组合。比如下面函数,函数foo和变量name是函数fn1的局部作用域中,fn1执行后把函数foo返回给fn2全局变量,这样就形成了一个闭包。这个闭包的函数是foo,而环境则是之前执行fn1时产生的局部作用域。
function fn1() {
var name = "zhangsan";
function foo() {
console.log(name);
};
return foo;
}
var fn2 = fn1();
函数的每次执行产生闭包,他们里面的变量只有该闭包可访问。
定时器例子: counter1, counter2的每次执行都会使他们自己的count自增,从而各自记录执行的次数而不相互干扰。
function createCounter() {
var count = 0;
var counter = function() {
count++;
console.log("执行第" + count + "次");
}
}
var counter1 = createCounter();
var counter2 = createCounter();
counter1(); // 执行第1次
counter1(); // 执行第2次
counter2(); // 执行第1次
counter1(); // 执行第3次
为了避免全局中出现过多不必要的变量,造成潜在的变量污染的风险,可以使用立即执行函数来实现块级作用域
例:如下,只需要一次性计算1加到100并输出到consolle。这样可以在执行完立即销毁变量。
(function(){
var i = 0;
var sum = 0;
for (; i <= 100; i++) {
sum += i;
}
console.log(sum);
})()
标签:自己 fun 组合 UNC code 返回 输出 foo 变量
原文地址:https://www.cnblogs.com/ykli/p/9737483.html