Node.js:variables作用域和模块closures

我仍然在理解node.js应用程序中的variables范围时遇到了一些麻烦。 在正常的JavaScript嵌套函数可以访问它的父母的variables。 在节点中,这似乎并不是这种情况。

在这里我有文件app.js有一个variables'bookies'和一个require'routes'。 我遇到的麻烦是variables'bookie'在我的routes.js文件中不可用。

这是为什么?

在这里输入图像描述

如果你想在路线中定义bookie,你应该像这样通过bookie:

var routes = require("./routes")(bookie); 

这是因为在Node中,顶层作用域不是全局作用域; 在Node模块内的var内容将是该模块的本地内容。