我正在通过Eloquent JavaScript书,其中包含以下代码:

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

当我通过调用createFunction()通过节点控制台(从命令提示符运行节点)运行此命令时,将获得[Function]作为返回值。但是,根据这本书,我应该得到100。

所以我有两个问题:这是为什么?其次,在节点控制台中运行这些小示例对于测试JS代码是否不是一个好主意?

最佳答案

您需要调用createFunction()的响应。

createFunction()();

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

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

07-28 03:51