javascript - 导出时nodejs变量未定义

标签 javascript node.js express

嘿,我想知道为什么以下返回未定义:

let variable;

module.exports.initialize = () => {
  variable = "123";
};

module.exports.variable = variable;


我只是需要文件 A 中的模块,然后调用初始化函数。在文件 B 中,我需要它和 console.log 变量,但它返回未定义。我在这里缺少什么?

最佳答案

在 JavaScript 中,有两种类型的值:1) 原始类型 和 2) 引用类型原始值始终按其值复制,而引用类型始终按其引用(而不是按其值)复制。

原始值示例:未定义、null、 bool 值、字符串、数字。 引用类型的示例:除基本类型之外的所有类型。例如,对象、数组等。请参阅下面的代码片段。

原始类型示例

let a = 10;
let b = a;

console.log(a);
console.log(b);

b = 20;

console.log(a);
console.log(b);

引用类型示例

let obj_a = {value: 1}
let obj_b = obj_a;

console.log(obj_a);
console.log(obj_b);

obj_b.value = 20;

console.log(obj_a);
console.log(obj_b);

因此,当您将变量声明为 let variable 时,其值为 undefined 并且当您分配 module.exports.variable = variable 时,您只是将其值设置为未定义

请参阅下面的示例。

const myExports = {};

let variable;

function initialize() {
  variable = 10;
}

myExports.variable = variable;

console.log(variable);
console.log(myExports.variable);

initialize();

console.log(variable);
console.log(myExports.variable);

但是,如果您要使用引用类型(例如对象)初始化变量,则module.exports.variable 将反射(reflect)对 variable 变量属性的任何更改。

示例:

const myExports = {};

let object = {};

function initialize() {
  object.value = 10;
}

myExports.variable = object;

console.log(object);
console.log(myExports.variable);

initialize();

console.log(object);
console.log(myExports.variable);

希望它有意义。

关于javascript - 导出时nodejs变量未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71097131/

相关文章:

node.js - 在 socket.io 上捕获来自客户端的所有事件 "emit"

node.js - 使用 Express 检索多个 GET 参数

javascript - 为什么在使用 sendFile() 方法为 node.js 中的两条路由提供静态文件时出现错误

javascript - HTML 实体到 Unicode 转义序列

javascript - jquery 选择器规范,无 ID 或类

javascript - 如何用一组数组制作文本轮播

javascript - 通过网络应用程序打开移动设备共享对话框

node.js - 如何在cloudant上进行简单的查找?

javascript - 从 Node js中的文件读取序列化的对象数组

javascript - ExpressJS源代码中的 'createApplication()'函数是如何工作的?