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