javascript - 关于 javascript 中的闭包,几乎不需要澄清

标签 javascript

我正在浏览有关闭包的 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/

相关文章:

javascript - 在哪里可以找到好的资源来学习 javascript 中的事件和事件监听器并了解更多信息?

javascript - 根据引用数组重新排序数组

javascript - 如何创建 "active"元素跟随页面内容位置的侧边菜单?

javascript - 排除未定义的值

javascript - 检查类名是否等于某个名称的 If 语句

javascript - 使用 'readline' 同步执行 node.js 程序

javascript - 如何从webpack javascript中的文件夹,子文件夹及其子文件夹动态获取文件

JavaScript,只能使用下划线 _ 访问属性

javascript - AngularJS Hello World 不起作用

javascript - 是否有可能在 jquery 中有整数数组