javascript - Node.js 与 Javascript 闭包

标签 javascript node.js closures

我正在阅读 Eloquent JavaScript Book,其中包含以下代码:

function createFunction(){
  var local = 100;
  return function(){return local;};
}

当我通过调用 createFunction() 通过 Node 控制台(从命令提示符运行 Node )运行它时,我得到 [Function] 作为返回值。不过按照书上应该是100。

那么我的两个问题:这是为什么?其次,在 Node 控制台中运行这些小示例对于测试 JS 代码来说是个坏主意吗?

最佳答案

需要调用createFunction()的响应。

createFunction()();

第一次调用 (()) 调用 createFunction() 并返回内部函数,第二次调用执行并返回 local关闭的变量。

在 Node 控制台(或任何其他控制台)中运行小示例是可以的,只要您了解环境,例如浏览器的控制台通常是 eval(),这会产生副作用,例如 delete 如何显然删除变量,而不仅仅是对象属性。

关于javascript - Node.js 与 Javascript 闭包,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10325711/

相关文章:

javascript - 关于编码和文本编码的java查询

javascript - 单独处理数组中的多个 promise

javascript - Sequelize 模型加载器导入不适用于顶级导入,但仅适用于函数导入

for-loop - 使用闭包在 for 循环中动态添加单击函数

functional-programming - 函数式编程 : Are maps sequential? 对闭包的影响

javascript - 'style' 为 null 或不是对象

javascript - 自动向结果添加额外空间和未捕获的类型错误 : Cannot read property 'keyCode' of undefined

node.js - 如何捕获 Mongoose 的错误代码

sql - 如何在 bookshelf.js 中连接列?

swift 4 : Cannot convert value of type '(_) -> ()' to expected argument type '() -> ()' or Argument passed to call that takes no arguments