当前位置: 首页 > 面试题库 >

在node.js中存储模块变量的范围是什么?

姜阳
2023-03-14
问题内容

当我在node.js模块中执行此操作时:

var abc = '123';

去哪儿了?我的意思是:在浏览器中window.abc(如果未在函数中执行或以其他方式执行)

如果我执行此操作:

abc = '123';

然后可以在中找到它global.abc,但这不是我想要的。


问题答案:

与浏览器不同,浏览器默认情况下将变量分配给全局空间(即窗口),而在Node中, 除非您 将变量 明确 分配给module.exports, 否则
变量的作用域为模块(文件)。

实际上,当您运行node myfile.jsrequire('somefile.js')文件中的代码包装如下时:

(function (exports, require, module, __filename, __dirname) {
     // your code is here
});


 类似资料:
  • 问题内容: 这将编译 这不会 我希望两者都能编译(也许这是C的工作方式?)。是什么原因导致无法在外部块中以相同的名称声明一个块中的变量? 问题答案: 简短的答案是:因为这是JLS§6.4中定义Java语言的方式。 您可能从其他语言中使用过,因此允许使用所谓的可变阴影。但是,Java语言的发明者认为这是一个笨拙的功能,他们不希望使用其语言: 此限制有助于检测其他一些非常模糊的错误。 但是,正如作者在

  • 问题内容: javascript中变量的范围是什么?它们在函数内部和外部的作用域是否相同?还是有关系吗?另外,如果变量是全局定义的,则将变量存储在哪里? 问题答案: TLDR JavaScript具有词汇(也称为静态)作用域和闭包。这意味着您可以通过查看源代码来确定标识符的范围。 四个范围是: 全球-一切可见 功能-在功能(及其子功能和块)中可见 块-在块(及其子块)中可见 模块-在模块内可见 在

  • 问题内容: 有没有办法在模块内部设置全局变量?当我尝试以最明显的方式进行操作(如下所示)时,Python解释器说该变量不存在。 并将模块导入其他文件后 追溯是: … UnboundLocalError:赋值之前引用了本地变量’ DBNAME ‘ 问题答案: 这是怎么回事。 首先,Python真正唯一的全局变量是模块范围的变量。您不能创建真正全局变量。您所要做的就是在特定范围内创建变量。(如果您在P

  • 问题内容: 我有以下代码: 我想尽可能地限制 err 的范围。我要面对的问题是,当我想将变量写入文件时,变量超出了范围。 处理这个问题的惯用方式是什么。我应该只重用变量 err 并在其他 if 块中检查它吗?像这样: 这可行,但对我来说可读性较差。 问题答案: 首先,不需要隔离变量。其次,您可以在if语句中进行简写分配,例如: 处理此特定示例的一种干净方法是将其放入自己的函数中并调用它:

  • 问题内容: 在其他任何地方都可以访问在静态块内声明的变量吗?他们是什么样的成员(即,他们也是静态成员吗​​?) 问题答案: 通常,程序员不需要在静态块内声明任何变量,通常这仅是为了确保初始化静态变量以供类的所有实例使用(取决于静态变量的范围)。 与方法和构造函数变量一样,在静态块内声明的变量将在该块内是局部的。 JDK文件

  • 我有1个文件,对它添加了一个测试文件: test06.ts 当我在test06.spec.ts中引用此函数的时候报错: