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

JavaScript 学习笔记— —闭包(一)

2015-04-03 22:55 253 查看
一个函数内部还定义了另一个函数,内部函数可以调用外部函数的变量,这就是闭包。

function foo(x) {
var tmp = 3;
function bar(y) {
alert(x + y + (++tmp));
}
bar(10);
}
foo(2)


上述代码输出为16,因为bar可以调用foo内的参数x,同样也可以调用foo里的tmp值。

function foo(x) {
var tmp = 3;
return function (y) {
alert(x + y + (++tmp));
}
}
var bar = foo(2); // bar is now a closure.
bar(10);


上方代码的函数依旧输出16,bar还是可以调用x和tmp,即使它在函数外。但其实tmp仍然是在bar闭包之内,所以每次调用时都会进行运算。

闭包最简单的实例:

var a = 10;
function test() {
console.log(a); // will output 10
console.log(b); // will output 6
}
var b = 6;
test();


当一个JavaScript函数被调用,将会创建一个新的执行环境。这个执行环境连同函数参数和父对象,还可以接收外部的声明变量。(如上例的a和b)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: