我正在通过Eloquent JavaScript书,其中包含以下代码:
function createFunction(){
var local = 100;
return function(){return local;};
}
当我通过调用createFunction()通过节点控制台(从命令提示符运行节点)运行此命令时,将获得[Function]作为返回值。但是,根据这本书,我应该得到100。
所以我有两个问题:这是为什么?其次,在节点控制台中运行这些小示例对于测试JS代码是否不是一个好主意?
最佳答案
您需要调用createFunction()
的响应。
createFunction()();
第一次调用(
()
)调用createFunction()
并返回内部函数,第二次调用执行并返回已关闭的local
变量。只要您了解环境,例如在节点控制台(或任何其他控制台)中运行小示例就可以了。浏览器的控制台通常是
eval()
'd,它会产生副作用,例如delete
如何显然地删除变量,而不仅仅是对象属性。