未捕获的 ReferenceError:初始化前无法访问“股票”

Use*_* 10 4 javascript module

我正在尝试将一个对象导入另一个 JS 文件,但我不断收到此错误,Uncaught ReferenceError: 初始化前无法访问“股票”。我已经申报了库存,而且我已经正确地导入了它,所以我看不出我做错了什么。任何帮助深表感谢。谢谢。

在股票文件中:

export const stocks = {
    megaCorp: {
        name: 'Mega Corporation',
        value: decideStockValue(),
        portIn: 0,
        document: "mega"
    },

    lunaBake: {
        name: "Luna Baking",
        value: decideStockValue(),
        portIn: 1,
        document: "luna"
    },
}
Run Code Online (Sandbox Code Playgroud)

在用户文件中:

import { stocks } from "./stocks.js";

export let user = {
    money: 2000,
    portfolio: [0, 0, 0, 0]
}

function getValue () {
    let value = user.money;
    let cannon = stocks.cannonRock.value * user.portfolio[0];
    let alpha = stocks.alphaComp.value * user.portfolio[1];
    let luna = stocks.lunaBake.value * user.portfolio[2];
    let mega = stocks.megaCorp.value * user.portfolio[3];
    value += cannon;
    value += alpha;
    value += luna;
    value += mega;
    return value;   
}

user.value = getValue();
Run Code Online (Sandbox Code Playgroud)

eha*_*hab 5

再次查看代码,它在语法上似乎很好,所以这不是答案,但我更想分享一段代码以了解它的行为。

Uncaught ReferenceError: Cannot access 'variable_name' before initialization在初始化之前访问词法变量时会抛出您共享的错误 (所谓的临时死区错误),但是在您共享的代码中,没有任何内容应该引发此错误。

例如这段代码会抛出这个错误

const x = 3
function a(){
    console.log(x)
    const x = 5;
}
a()
Run Code Online (Sandbox Code Playgroud)

假设错误确实源自用户文件,那么以下代码可能会解决它。在你的代码中, getValue 是一个应该被提升的函数表达式(这应该没问题),但可能是你使用的捆绑器行为不端。

import { stocks } from "./stocks.js";

const getValue = (stocks, money, portfolio) => {
  let value = money;
  let cannon = stocks.cannonRock.value * portfolio[0];
  let alpha = stocks.alphaComp.value * portfolio[1];
  let luna = stocks.lunaBake.value * portfolio[2];
  let mega = stocks.megaCorp.value * portfolio[3];
  value += cannon;
  value += alpha;
  value += luna;
  value += mega;
  return value;
};

const money = 2000;
const portfolio = [0, 0, 0, 0];
export const user = {
  money,
  portfolio,
  value: getValue(stocks, money, portfolio),
};


Run Code Online (Sandbox Code Playgroud)