我有多個腳本,它們幾乎相同,但在頂層設定的“params”物件上具有不同的引數。當我 require() 同一檔案上的腳本同時運行它們時,'params' 物件會被覆寫,并且只使用最后一個必需的 'params'。我該如何阻止?
檔案 1:
params = {
name: "John",
salary: "50"
}
檔案2:
params = {
name: "Victoria",
salary: "10"
}
檔案 3:
params = {
name: "Veka",
salary: "80"
}
主檔案:
require(file1.js)();
require(file2.js)();
require(file3.js)();
// do things
我知道我可以更改每個檔案的名稱,但我想我遺漏了一些東西。先感謝您。
uj5u.com熱心網友回復:
想要的行為是什么?您似乎有一個全域變數,它自然不能同時保存多個不同的值。如果您需要訪問所有三個檔案提供的資料,并且需要將其作為全域變數(而不是將您的檔案變成回傳值的函式),那么您可以改為將其設定為陣列或物件單個檔案插入。
大批:
require 呼叫前的主檔案:
params = []
檔案 1(其他檔案相同):
params.push({
name: "John",
salary: 50
});
目的:
主檔案:
params = {}
檔案 1:
params['file1'] = {
name: "John",
salary: 50
};
選擇
除非絕對必要,否則不鼓勵使用全域變數,因為它們會導致令人困惑的錯誤并且難以除錯。相反,你可以這樣做:
檔案 1
function getData() {
return {
name: 'John',
salary: 50
};
}
module.exports = getData;
主檔案:
const file1Data = require('./file1.js')();
uj5u.com熱心網友回復:
您需要了解 Javascript 中的閉包和變數作用域。
這里有一篇有趣的文章。
因此,您需要將這些變數封裝在它們自己的函式中。
const yourFunctionFile1 = () => {
const params = {
name: "Veka",
salary: "80"
}
// do whatever you want
}
module.exports = yourFunctionFile1
uj5u.com熱心網友回復:
您可以在每個檔案中匯出 params 物件,然后在主檔案中要求它們作為變數:
檔案 1:
module.exports.params = {
name: "John",
salary: "50"
}
檔案2:
module.exports.params = {
name: "Victoria",
salary: "10"
}
主檔案:
let params1 = require('./file1').params
let params2 = require('./file2').params
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/359033.html
標籤:javascript 节点.js 全局变量
上一篇:二叉搜索樹遍歷-查找最近值
