亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我的局部變量沒有更新全局變量?

我的局部變量沒有更新全局變量?

拉莫斯之舞 2023-08-24 18:24:45
我有一個全局變量號,因此它獲得了一個函數的傳遞,但是當它完成時,它應該在函數內部更改該變量并將其傳遞到外部全局變量進行更新。因此,它繼續使用舊的全局變量,而其他一切都在更新并變得更大。var P_Level = 1var E_Level = 1var P_Current = 0var P_Max = 100function 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 100P_EXP_Gain(80)您可以通過 console.log 看到,在 while 循環之前,它的 P_Max 始終為 100,但在那之后,它會正確更改,但該更改永遠不會更新為全局 P_Max。我還注意到,在第一個 P_EXP_Gain 之后,在考慮增益之前,函數第一部分中的 P_current 將增加 100。我不知道為什么會發生這種情況。我是不是數學哪里搞錯了?https://jsfiddle.net/Necrorifter/Lc18tobw/9/
查看完整描述

2 回答

?
白板的微信

TA貢獻1883條經驗 獲得超3個贊

P_Experience 函數的參數名稱是 P_Current 和 P_Max,它們覆蓋函數內的全局范圍。最簡單的解決方案是重命名參數



查看完整回答
反對 回復 2023-08-24
?
慕碼人8056858

TA貢獻1803條經驗 獲得超6個贊

我認為您的函數正在使用傳遞給函數的參數而不是全局變量。您可以重命名參數,它應該可以工作。


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')

    }

如果您絕對需要參數,也許像這樣。如果你不需要它們,你可以在你的函數中使用全局變量而不傳遞它們


查看完整回答
反對 回復 2023-08-24
  • 2 回答
  • 0 關注
  • 182 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號