Javascript 添加时的变量和数字问题

Javascript 添加时的变量和数字问题,javascript,Javascript,我有一个小脚本,我已经附加到一个基于文本的游戏中,我正在尝试运行一个运行正常的货币系统。然而,我有一个问题,变量保持数字在轨道上。我对Javascript非常陌生,所以我还不知道太多,我希望能得到一些帮助 const modifier = (text) => { var money = Number() let modifiedText = text lowered = text.toLowerCase() if (lowered.includes('money')) {

我有一个小脚本,我已经附加到一个基于文本的游戏中,我正在尝试运行一个运行正常的货币系统。然而,我有一个问题,变量保持数字在轨道上。我对Javascript非常陌生,所以我还不知道太多,我希望能得到一些帮助

const modifier = (text) => {
  var money = Number()
  let modifiedText = text
  lowered = text.toLowerCase()
  if (lowered.includes('money')) {
    if (/take .+ money/g) {
      let moneyChange = (Math.floor(((Math.random()) * Math.log2(Math.random() * 500) * (Math.sinh(Math.random() * 5)))))
      if ((moneyChange) > 0) {
        console.log(moneyChange)
        var money = (moneyChange + money)
        console.log(money)
        modifiedText = text + (`\nYou find $${moneyChange}. You now have $${money}.`)
        return {text: modifiedText}
        console.log(modifiedText)
      } else {
          modifiedText = text + ('\nYou find no money.')
          return {text: modifiedText}
          console.log(modifiedText)
      }
    }
  }
  if (lowered.includes('your wallet')) {
    if (/check .+ wallet/g) {
        console.log(money)
        if (money == 0) {
          modifiedText = (`\nYou have no money`)
          return {text: modifiedText}
        } else {
        modifiedText = (`\nYou have $${money}`)
        return {text: modifiedText}
        }
    }
  }
  return {text: modifiedText}
}
modifier(text)
基本上,这个脚本应该做的是提取我在游戏中输入的文本,阅读特定的单词,决定我要做什么,并使用我拥有的变量,它应该让我获取并跟踪金钱。第一部分似乎有效,它给了我正常的输出,比如“你找到17美元,你现在有17美元。”然而,第二部分有问题。当我输入“check your wallet”时,它不会认出我有那17美元,它只是说“你没有钱”,它说的是NaN或undefined,直到我将变量设为一个空数字。我断断续续地摆弄了2到3个小时,但似乎找不到任何有效的解决办法。大多数编辑会导致值变为NaN或未定义


编辑:所以我得到的评论是代码看起来很奇怪。是的,这是脚本与它所拉的文本交互方式的原因。例如,if(/take.+money/g)。由于某种原因,没有if代码就无法工作。这是因为我正在使用的游戏代码,因为游戏性和很多游戏内存都是由人工智能在运行中生成的,而且由于人工智能编程方式的一些问题,它会干扰脚本编写,除非有时非常具体。抱歉没有澄清。

您从未将
初始化为任何东西。由于在为变量赋值之前使用该变量,因此使用该变量进行的任何计算都将导致错误

而不是
var money=Number()do<代码>风险值=0

当您第一次尝试使用
money
时,您会在代码的下面使用前面的单词
var
。删除
var
。成功

money += moneyChange;

你从不初始化
任何东西。由于在为变量赋值之前使用该变量,因此使用该变量进行的任何计算都将导致错误

而不是
var money=Number()do<代码>风险值=0

当您第一次尝试使用
money
时,您会在代码的下面使用前面的单词
var
。删除
var
。成功

money += moneyChange;

如果(/take.+money/g)
,那是什么巫毒呢?除非我错过了一些ES6开发或者其他什么,否则我不知道该如何工作。@Nick是的,很明显-但是如果围绕它的话,这样一个
的目的是什么?这不会测试或匹配这个正则表达式,除非这里涉及到一些我不知道的魔法?
var money=Number()
毫无意义。如果您只是试图定义一个变量,它应该是
var money
@epascarello每次我这样做时,它都会开始输出null和undefined,无论我做什么,甚至在添加到它时也是如此。正如前面指出的,使用正则表达式进行的随机if检查是错误的。应该使用测试或匹配。我不知道你到底想做什么,所以很难帮助你。如果(/take.+money/g)
,什么是巫毒?除非我错过了一些ES6开发或者其他什么,否则我不知道该如何工作。@Nick是的,很明显-但是如果围绕它的话,这样一个
的目的是什么?这不会测试或匹配这个正则表达式,除非这里涉及到一些我不知道的魔法?
var money=Number()
毫无意义。如果您只是试图定义一个变量,它应该是
var money
@epascarello每次我这样做时,它都会开始输出null和undefined,无论我做什么,甚至在添加到它时也是如此。正如前面指出的,使用正则表达式进行的随机if检查是错误的。应该使用测试或匹配。我不确定你到底想做什么,所以很难帮助我。我仍然得到同样的结果。下面是代码最后要做的事情-拿着钱。你找到了5美元。你现在有5美元了-检查你的钱包。你没有钱。这两个if语句都必须为真,钱包才能以代码编写的方式报告正确的金额。在运行每个if语句时,是否将其放入其中?将money变量的声明移到函数外部。将money变量移到函数外部后,它仍在执行相同的操作,只是不管出于何种原因,它都会给我一个未定义的值,尽管它设置为0。即使确保两个if语句都为真,执行钱包检查时也不会将新值传输到变量。如果我多次执行第一个操作只是为了多次添加moneyChange,它仍然只显示最近的moneyChange值。我仍然得到相同的结果。下面是代码最后要做的事情-拿着钱。你找到了5美元。你现在有5美元了-检查你的钱包。你没有钱。这两个if语句都必须为真,钱包才能以代码编写的方式报告正确的金额。在运行每个if语句时,是否将其放入其中?将money变量的声明移到函数外部。将money变量移到函数外部后,它仍在执行相同的操作,只是不管出于何种原因,它都会给我一个未定义的值,尽管它设置为0。即使确保两个if语句都为真,执行钱包检查时也不会将新值传输到变量。如果我多次执行第一个操作只是为了多次添加moneyChange,它仍然只显示最近的moneyChange值。