我正在浏览有关闭包的 mozilla 文档,我想知道为什么下面的代码不起作用。有人可以澄清为什么以下内容不起作用,而定义变量并调用它却有效。
var outerFunction = function(inp) {
var input = inp;
var innerFunction = function() {
console.log(inp);
};
return innerFunction;
};
outerFunction(32); //returns nothing
对比
var outerFunction = function(inp) {
var input = inp;
var innerFunction = function() {
console.log(inp);
};
return innerFunction;
};
var newFunc = outerFunction(32);
newFunc(); // returns 32
谢谢,如果这是一个愚蠢的问题,我很抱歉。
最佳答案
第二个代码执行您作为第一个函数的返回对象获得的函数(请注意,您的函数返回一个需要调用才能执行的函数)。您可以使返回函数自调用,然后它就可以工作而无需将其分配给另一个变量:
var outerFunction = function(inp) {
var input = inp;
var innerFunction = function() {
console.log(inp);
};
return innerFunction;
};
(outerFunction(32)()) //returns 32
关于javascript - 关于 javascript 中的闭包,几乎不需要澄清,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31945751/