如何在 Math.floor 中使用变量

How to use a variable in Math.floor

我想得到一个人拥有的最大金额

let targetUser = message.guild.member(message.mentions.users.first()) || message.guild.members.get(args[0]);
var targetForMath = userData[targetUser.id].money;

我想使用该变量来设置 Math.floor 的最大数量。我试过了

let randomStealCoins = Math.floor(Math.random() * targetForMath) + 1;

但是当我使用它时它给了我 NaN。我怎样才能让它给我一个实际的实际数字而不是奇怪的东西?

如果 targetForMath 未定义,将得到 NaN: 自:

Math.random() * undefined -> NaN

我会确保 targetForMath 是一个有效数字。

我不会提到您正在混合 varlet,只是说您正在这样做并且应该小心。 我要问的第一个问题是 typeof userData[targetUser.id].money 是什么,更具体地说,它的 value 是什么。如果它是一个数字、布尔值、null 或空数组 (?!),它应该可以工作,或者至少不是 return NaN。但是,如果它是字符串、未定义或任何其他值,JavaScript 将不会真正理解您说的意思,例如,乘以 Math.random() 乘以 "fish".

通常在这种情况下,console.log 弄清楚 userData[targetUser.id] 是什么是个好主意,只是为了确保您从中返回的对象确实是您认为的那样。在 targetUser 的 id 定义的 userData 对象上实际上有一个 属性 吗?