码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-04-03 23:41:49      阅读:217      评论:0      收藏:0      [点我收藏+]

标签:

一个函数内部还定义了另一个函数,内部函数可以调用外部函数的变量,这就是闭包。

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)

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

标签:

原文地址:http://www.cnblogs.com/eaysun/p/4391215.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!