sha*_*ess 2 javascript node.js express
嘿,我想知道为什么以下返回未定义:
let variable;
module.exports.initialize = () => {
variable = "123";
};
module.exports.variable = variable;
Run Code Online (Sandbox Code Playgroud)
我只是需要文件 A 中的模块,然后调用初始化函数。在文件 BI 中需要它和 console.log 变量,但它返回未定义。我在这里缺少什么?
在 JavaScript 中,有两种类型的值:1)原始类型和 2)引用类型。原始值始终按其值复制,而引用类型始终按其引用(而不是按其值)复制。
原始值的示例:undefined, null, boolean, string, number. 引用类型的示例:除基本类型之外的所有类型。例如,Object, array等等。请参阅下面的代码片段。
let a = 10;
let b = a;
console.log(a);
console.log(b);
b = 20;
console.log(a);
console.log(b);Run Code Online (Sandbox Code Playgroud)
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);Run Code Online (Sandbox Code Playgroud)
let variable因此,当您按其值声明变量undefined并分配时,module.exports.variable = variable您只需将其值设置为undefined。
请参阅下面的示例。
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);Run Code Online (Sandbox Code Playgroud)
但是,如果您要variable使用引用类型(例如,对象)初始化,则对象module.exports.variable将反映变量属性的任何更改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);Run Code Online (Sandbox Code Playgroud)
希望它有意义。
| 归档时间: |
|
| 查看次数: |
2041 次 |
| 最近记录: |