JavaScript公式返回NaN值问题排查:游戏升级系统中shaftDepth计算异常
问题分析与解决方案
嘿,这个NaN问题其实是变量声明顺序的小失误,你的升级功能实现思路是完全没问题的!
为什么会出现NaN?
在JavaScript中,使用var声明的变量会存在变量提升,但变量的赋值并不会被提升。看你的代码:
var shaftDepth = 1; var nextShaftDepth = ((maxThreshold - shaftDepth) / 20) + shaftDepth; var maxThreshold = 10;
当计算nextShaftDepth的时候,maxThreshold还没有被赋值,此时它的值是undefined。undefined和数字进行运算会得到NaN,最终导致nextShaftDepth变成NaN。
修正后的代码
只需要调整变量的声明顺序,把maxThreshold的赋值放到计算之前:
var maxThreshold = 10; var shaftDepth = 1; var nextShaftDepth = ((maxThreshold - shaftDepth) / 20) + shaftDepth;
运行这段代码后,nextShaftDepth的值就会是你预期的1.45了。
关于你的升级思路验证
你的公式逻辑是对的:每次让shaftDepth向maxThreshold靠近当前距离的5%(因为(maxThreshold - shaftDepth)/20就是当前距离的1/20,也就是5%),这样两者之间的距离就会减少5%,完全符合你想要的升级效果。
内容的提问来源于stack exchange,提问作者vuloogular
相关产品推荐
相关产品推荐

