我试图获取JavaScript的关闭更好的基本认识简单封闭的困境
说,我们在Node.js的这两种不同的情况
function A(){
console.log(data); //this should give us a null pointer
}
module.exports = function(data){
return A;
}
与
module.exports = function(data){
return function A(){
console.log(data); // variable "data" will be remembered
};
}
为什么在第一种情况下,变量“数据”不会被记住,但在后一种情况下,封锁会“记住”变量?
我确定在某些语言的某处,声明一个函数并引用一个函数可能都会记住外函数中的变量,但我想我想更好地理解它们之间的差异。
关于此问题,有一个很好的社区wiki [JavaScript关闭如何工作](http://stackoverflow.com/questions/111102/how-do-javascript-closures-work?rq=1) – PSWai