gpt4 book ai didi

javascript - TypeError : Math. floor() 不是函数

转载 作者:搜寻专家 更新时间:2023-10-31 23:29:19 24 4
gpt4 key购买 nike

我有一个用 discord.js 编写的 Node.js Discord Bot,我想做一个回合制战斗系统,所以我做了一个伤害计算函数。

var damage = parseFloat( Math.floor( Math.random() * skill.dmg/5 ) + skill.dmg )
//some other factors, none causing the error
damage = Math.floor( damage )

代码很简单,但是出错了

TypeError: Math.floor(...) is not a function

我检查了所有其他帖子,做了他们所做的,但没有任何效果,我已经清除了缓存,我已经检查了驼峰命名法,...

我该怎么办?

主要功能代码:

var damage = parseFloat( Math.floor( Math.random() * skill.dmg/5 ) + skill.dmg )
damage += weapons[ user.inv.armor.weapon ].damage
var crit = ( ( Math.floor( Math.random() * 100 ) + skill.crit ) > 100 ? ( Math.random() + 1 ).toFixed( 1 ) : 1 )
damage *= crit
if ( !tags.includes( 'ignorant' ) ) {
damage -= enemy.stats.res
damage *= parseFloat( "0." + ( 100 - enemy.res[ tags[1] ] ) )
damage -= shields[ enemy.inv.armor.shield ].res
}
damage = Math.floor( damage )damage = Math.floor( damage )
( monster ? enemy.hp -= damage : enemy.profile.hp -= damage )

最佳答案

Math.floor 确实存在,这不是Math 的问题。如果 Math.floor 不是函数,则错误为:

TypeError: Math.floor 不是函数

但是你得到了

TypeError: Math.floor(...) is not a function

这意味着你在做:

Math.floor(damage)();

所以在 damage = Math.floor( damage ) 之后发布代码,这很可能是 (...),这样我们就可以查明确切的错误。

try {
Math.floors(5); // Added extra S on purpose
} catch(e){
console.log(e.message);
}


try {
Math.floor(5)();
} catch(e){
console.log(e.message);
}

更新

错误是在以下代码中触发的:

damage = Math.floor( damage ) 
( monster ? enemy.hp -= damage : enemy.profile.hp -= damage )

您正在做的是调用 Math.floor 的结果,这是一个数字。

damage = Math.floor( damage ); // ; this bad boy was all that was missing.
monster ? enemy.hp -= damage : enemy.profile.hp -= damage;

这就是为什么分号很重要!

Do you recommend using semicolons after every statement in JavaScript?

是的,我绝对愿意

关于javascript - TypeError : Math. floor() 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49712113/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com