我正在阅读 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/