Javascript 我的局部变量没有更新全局变量?
我有一个全局变量号,所以它得到一个传递给函数的过程,但当它完成时,它假设在函数内部更改该变量,然后在外部传递给全局变量以进行更新。因此,它继续使用旧的全局变量,而其他一切都在更新并变得更大Javascript 我的局部变量没有更新全局变量?,javascript,math,Javascript,Math,我有一个全局变量号,所以它得到一个传递给函数的过程,但当它完成时,它假设在函数内部更改该变量,然后在外部传递给全局变量以进行更新。因此,它继续使用旧的全局变量,而其他一切都在更新并变得更大 var P_Level = 1 var E_Level = 1 var P_Current = 0 var P_Max = 100 function P_EXP_Gain(exp) { console.log('P_Max1 is '+P_Max) console.log('P_Cur
var P_Level = 1
var E_Level = 1
var P_Current = 0
var P_Max = 100
function P_EXP_Gain(exp) {
console.log('P_Max1 is '+P_Max)
console.log('P_Current1 is '+P_Current)
console.log('P_Level1 is '+P_Level)
console.log("")
if (exp == undefined || null) {
P_Current = (E_Level * 20) + P_Current
P_Max = P_Max
P_Experience(P_Current, P_Max)
}
else {
P_Current = ((E_Level * 20) + exp) + P_Current
P_Max = P_Max
console.log('P_Max2 is '+P_Max)
console.log('P_Current2 is '+P_Current)
console.log('P_Level2 is '+P_Level)
console.log("")
P_Experience(P_Current, P_Max)
}
}
function P_Experience(P_Current, P_Max) {
while (P_Current >= P_Max) {
P_Level++ // There is a hidden error that causes one to gain perm level up every time they level up via normal way.
P_Current = P_Current - P_Max
P_Max = P_Level * 100
console.log("")
console.log('P_Max3 is '+P_Max)
console.log('P_Current3 is '+P_Current)
console.log('P_Level3 is '+P_Level)
console.log("")
alert('Level Up')
}
}
P_EXP_Gain(80)
P_EXP_Gain(80) // notice that current random get extra 100
P_EXP_Gain(80)
您可以通过console.log看到,在while loop之前,它的p_Max始终为100,但在此之后,它会正确更改,但该更改永远不会更新为全局p_Max。我还注意到,在第一次p_EXP_增益之后,在考虑增益之前,函数的第一部分p_电流将增加100。我不明白为什么会发生这种事。我的数学有什么地方错了吗
p_Experience函数的参数名为p_Current和p_Max,这将覆盖函数中的全局范围。最简单的解决方案是重命名参数我认为您的函数使用传递到函数中的参数,而不是全局变量。您可以重命名参数,它应该可以工作
function P_Experience(P_Current_param, P_Max_param) {
while (P_Current >= P_Max) {
P_Level++ // There is a hidden error that causes one to gain perm level up every time they level up via normal way.
P_Current = P_Current - P_Max
P_Max = P_Level * 100
console.log("")
console.log('P_Max3 is '+P_Max)
console.log('P_Current3 is '+P_Current)
console.log('P_Level3 is '+P_Level)
console.log("")
alert('Level Up')
}
如果你绝对需要这些参数,也许会这样。如果不需要全局变量,只需在函数中使用全局变量,而无需将它们传入什么?我以为它应该把东西传递到其他地方,所以我为什么要首先使用它?在函数名中使用这些参数是错误的吗?因为您试图修改全局范围,所以不需要命名与全局范围中的参数匹配的变量,因为局部范围总是覆盖全局范围。如果您不了解,您可以阅读更多关于Javascript范围的内容,我看到了,所以参数将作为自己的名称而不是镜像全局,我看到了,谢谢您提供这些信息。我查看了本地和全局范围,但没有回忆起任何有关参数的内容。我在局部范围内没有变量声明,但是这些参数是从P_EXP_Gain传递到P_Experience函数的,而P_EXP_Gain是从全局?否?不需要将它们传递给函数,因为它们是全局变量。将它们传递给函数会将它们更改为parametersI see,因此只有将一个函数中的局部变量传递给另一个函数时才有用,因为该函数可能无法在第一个函数中看到变量声明,因为范围正确吗?