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

javascript中闭包的概念

2016-06-05 20:00 295 查看

    在JS中,不存在其他语言中的大括号级的作用域,但它有函数作用域,若想访问函数内部的局部变量,可以在函数内部声明一个函数,用来返回函数内部的局部变量。

如下例:

   

var a=5;;
function f1() {
var a=1;
function f2() {
alert(a);
}
return f2();
}
a;
=>5
f1();
=>1

    由于在Javascript语言中,只有函数内部的子函数才能读取局部变量,因此可以把闭包简单理解成“定义在一个函数内部的函数”。所以,在本质上,闭包就是将函数内部和函数外部连接起来的一座桥梁。

    可有以下几种闭包:

    闭包#1:

  

function f() {
var b = 'b';
return function () {
return b;
}
}
var n = f();
n();
=>'b'

    闭包#2:

var n;
function f() {
var b = 'b';
n = function () {
return b;
}
}
n();
=>'b'

    闭包#3:

   

function f(arg) {
var n = function () {
return arg;
}
arg++;
return n;
}
var m = f(123);
m();
=>124

 闭包#3中n被赋值时函数并没有被调用,调用是在n被求值,也就是执行return n;语句时被调用的。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: