为什么其中一个是闭合而不是另一个?Javascript
why is one of these a closure and not the other one? Javascript
我一直在阅读有关JS中的闭包的信息,我不会说我完全理解它,但是在阅读了一些来自不同站点的示例和信息后,至少对它有一些了解,但我真的无法理解为什么其中一个是闭包而不是另一个。
非闭合功能
var secret = "007";
function getSecret(){
var secret = "008";
function getValue(){
return secret;
}
return getValue();
}
getSecret();
闭合功能
var secret = "007";
function getSecret(){
var secret = "008";
function getValue(){
return secret;
}
return getValue;
}
var getValueFun = getSecret();
getValueFun();
它们都具有相同的输出,因为我可以实现第一个不是闭包的返回调用的函数,而闭包只返回函数。 这是我能想到的唯一区别,这也是其中一个是闭包而不是另一个的部分原因吗?
//你可以试试这个:
var secret = "007";
function getSecret(){
var secret = "008";
var getValueFunc = function(){
return secret;
}
return {
getValue:getValueFunc
};
}
var getValueFun = new getSecret();
getValueFun.getValue();
相关文章:
- 多次调用另一个javascript函数中的javascript函数
- HTML外部javascript加载另一个javascript
- 如何用另一个Javascript更改Javascript函数值
- 将变量值从一个javascript传递到另一个javascript
- 获取javascript函数中另一个javascript函数的响应
- 将一个javascript对象推送到另一个javascript对象中
- 如何在angularjs中调用局部视图所需的另一个javascript
- 将按钮名称和值传递给另一个 JavaScript 页面
- 从另一个 javascript 文件访问 main() 函数
- 如何使用另一个 JavaScript 文件中定义的类名调用回调函数
- 在另一个Javascript文件中包含Javascript文件并加载
- 从另一个javascript中调用函数
- 在另一个 JavaScript 文件中使用 JavaScript
- 从另一个Javascript脚本(Canvas3D)更新QML属性
- jquery+调用来自另一个Javascript包装器的函数
- 有没有一种方法可以更改函数's来自另一个javascript函数的参数
- 将变量从一个JS文件发送到另一个JavaScript文件
- Android WebView:在javascript中,有没有一种方法可以加载另一个javascript文件,并为堆栈
- 将变量从一个 JavaScript 文件传递到另一个 JavaScript 文件
- 从一个 Javascript 文件中从另一个 Javascript 文件调用函数