我看闭包是为了能让外部得到函数内部定义的局部变量。
那为什么一定要写成这样的形式呢?
function f1(){
var n=999;
function f2(){
alert(n);
}
return f2;
}
var result=f1();
result(); // 999
就直接return 不行么?像这样
function f1(){
var n=123;
return n;
}
x=f1();
alert(x); ///123
这也是闭包么?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
首先,第二个肯定不是闭包,闭包是一个函数。
闭包一般用来隐藏或说保护我们的一些成员变量,通过闭包的形式返回出去一个能够操作我们保护起来的成员变量的函数。
后者不是闭包。
简单的说,闭包就是能够读取其他函数内部变量的函数
如果把第一个例子改成这样的形式
这里返回的result可以即时的访问和修改f1里的变量n,
除了这种方法之外,外部没有方法可以改变n的值,相当于定义了一个特权方法。这就是闭包的作用,体会一下。
楼主的理解有点狭隘了,
1,闭包不是为了让函数外部拿到内部变量。而是为了保护私有变量
2,return出来的是一个值,不是变量本身,此处的return是取得私有变量值的一种方法,跟闭包没有严格关系
直接return出去是一个变量,而闭包是返回的一个执行环境。。。
首先你要理解闭包是什么? 说简单点就是一个函数,只是通过这个函数 可以在函数的外部去访问函数内部的变量。
return 变量,只是返回值,我想问楼主如果想引用内部变量怎么办?