【问题标题】:ReferenceError: utea is not defined?ReferenceError: utea 没有定义?
【发布时间】:2020-07-13 22:11:04
【问题描述】:

因此,大约 2 周前,我在我的机器人中添加了一个经济系统,并且已经尝试用它修复错误 4 天了,我遇到了很多错误,我几乎是一个粘在椅子上的一团,一直在精神试图弄清楚这一点的故障。

我目前遇到的错误是:ReferenceError: utea is not defined?

我在脚本中消息事件的开头定义了 utea:

client.on("message", msg => { // When user sends chat message

    let userData = JSON.parse(fs.readFileSync(__dirname + '/Storage/userData.json', 'utf8'))

    // LET VARS
    let content = msg.content.toLowerCase()
    if (msg.guild !== null) {
        // CASE COIN CURRENCY
        if (!userData[msg.author.id + msg.guild.id]) userData[msg.author.id + msg.guild.id] = {}
        if (!userData[msg.author.id + msg.guild.id].money) userData[msg.author.id + msg.guild.id].money = 5

        // ITEMS
        if (!userData[msg.author.id + msg.guild.id].tea) userData[msg.author.id + msg.guild.id].tea = 0
        if (!userData[msg.author.id + msg.guild.id].milk) userData[msg.author.id + msg.guild.id].milk = 0
        if (!userData[msg.author.id + msg.guild.id].cof) userData[msg.author.id + msg.guild.id].cof = 0
        // ITEMS >B> USAGE VARS
        let utea = 0
        let umilk = 0
        let ucof = 0
    }

    fs.writeFile(__dirname + '/Storage/userData.json', JSON.stringify(userData), (err) => {
        if (err) console.error(err)
    })

导致它的行:

if (utea == 0) { // this line right here <<<
    // code stuff
}

【问题讨论】:

    标签: javascript node.js bots discord discord.js


    【解决方案1】:

    问题在于范围。

    MDN: let 语句声明了一个块范围的局部变量,可选择将其初始化为一个值。

    换句话说,这个变量utea 只存在于if (msg.guild !== null) { } 块内

    但是如果你写:

    var utea = 0
    

    见:

    MDN: var 语句声明一个变量,可选择将其初始化为一个值。

    这个变量不会被限定为一个块,你的代码应该可以工作。

    我会说,这不是一个好习惯。在 Ecma 上添加 letconst 的原因之一是为了防止在大范围内误导性地使用变量。

    要继续使用let,请将变量声明放在if 语句之外:

    let utea = 0
    
    if (msg.guild !== null) {
      // ...
    }
    
    // ...
    
    if (utea == 0) {
      // ...
    }
    

    【讨论】:

      【解决方案2】:

      utea 在你的条件块中定义

      if (msg.guild !== null) { ... }

      未定义块外的utea

      【讨论】:

        猜你喜欢
        • 2019-08-07
        • 2016-01-02
        • 1970-01-01
        • 1970-01-01
        • 2021-03-13
        • 2021-01-16
        • 2018-11-06
        • 1970-01-01
        • 2015-07-19
        相关资源
        最近更新 更多