gpt4 book ai didi

javascript - 为什么 Exports 和 require() 创建全局变量?

转载 作者:行者123 更新时间:2023-12-02 19:45:41 25 4
gpt4 key购买 nike

在 db.js 中

exports = mongoose = require('mongoose')

在output.js

exports.log = function() {
console.log(mongoose)
}

在 app.js 中

var mg = require('./db.js')
var output = require('./output.js')
output.log() //output mongoose

如果我将 db.js 更改为:

var mongoose = require('mongoose')
exports = mongoose

然后output.log()就找不到mongoose了。

最佳答案

JavaScript 中的一个常见错误是在同一语句中声明多个彼此相等的变量,并期望您声明局部变量。

var a = b = 42;

这将创建一个局部变量a和一个全局变量b。首先使 b 等于 42,然后使 a 等于 b

你想做的是

var a = 42, b = 42;

var b = 42;
var a = b;

在您的第一个 db.js 代码中,exports 已经是模块的本地变量,执行 variable = mongoose = 'whatever'; 创建一个名为 的全局变量 Mongoose 。在截取的第二个 db.js 代码中,您将 mongoose 声明为本地。

关于javascript - 为什么 Exports 和 require() 创建全局变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9904827/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com