我目前正在編寫一個返回NaN的函數。部分參與我發現只有一個錯誤來源。在谷歌應用腳本中使用函數時的NaN值
下面是相關的代碼返回楠:
function test() {
Logger.log(howMuchDamage([[808, 404], [1814, 2595, 0], 0.3869, 0.6802, 0.103, 1], [100000, 10875, [0, 0], [0.1, 0.1], 0, 0], ["FT", "IE", [0, 0.2], 0.2075 * 3, 0.0208 * 3, 0, 0], [0.05], [0.05, 0.05], [0.2,0.05]))
}
function test2() {
Logger.log(tooltipNumber("FT", [0, 0.2], 0.2075 * 3, 0,0208 * 3, 0, 0, [1814, 2595, 0], [808, 404]))
}
function howMuchDamage(attackerStats, targetStats, abilityData, multiplicative, additive, critIncrease) {
var damage = 0
var crit = 0
var hit = didItHit(attackerStats[5], targetStats[2], abilityData[0])
if(hit === 1) {
damage = tooltipNumber(abilityData[0], abilityData[3], abilityData[4], abilityData[5], abilityData[6], attackerStats[1], attackerStats[0])
crit = didItCrit(attackerStats[3] + critIncrease[0], targetStats[4], abilityData[1])
if(crit === 1) {
damage *= criticalDamage(attackerStats[4] + critIncrease[1], attackerStats[3] + critIncrease[0])
}
else if (crit === -1) {
crit = 0
damage *= (1 - targetStats[5])
}
//Multiply damage by the multipliers through an array with all the relevant multipliers and apply DR.
damage *= multiplicativeMultiplier(multiplicative, additiveMultiplier(additive)) * (1 - totalDR(targetStats[2], targetStats[1], abilityData[1], abilityData[2]))
}
return [1, damage, crit, hit]
}
function tooltipNumber(type, coefficient, StdHPmin, StdHPdiff, AMP, bonus, weaponDamage) {
if(type === "MR") {
return coefficient * bonus[0] + (1 + AMP) * (Math.random() * weaponDamage[1] + weaponDamage[0]) + baseDamageValue * (Math.random() * StdHPdiff + StdHPmin)
}
else if(type === "FT") {
return coefficient * bonus[1] + baseDamageValue * (Math.random() * StdHPdiff + StdHPmin)
}
else if(type === "heal") {
return coefficient * bonus[2] + baseHealingValue * (Math.random() * StdHPdiff + StdHPmin)
}
else {
return coefficient * bonus[1] + baseDamageValue * (Math.random() * StdHPdiff + StdHPmin)
}
}
howMuchDamage
應該返回號碼的列表(整數的一切,但傷害)。 damage
是NaN。
我已將問題簡化爲damage = tooltipNumber(abilityData[0], abilityData[3], abilityData[4], abilityData[5], abilityData[6], attackerStats[1], attackerStats[0])
。我試圖將其更改爲damage = 5000
,它仍然返回NaN。 tooltipNumber
也正在返回NaN。一切似乎都很好。只增加浮游物或整數。唯一的字符串在if
條件中。
的谷歌應用程序腳本是什麼這個問題?如果我沒有遺漏任何東西,這是純粹的JavaScript。 – Adelin
@Adelin - 主要在Google Apps腳本中完成,但我知道Javascript,兩者幾乎完全相同。而Logger.log是GAS,而不是Javascript。 我只是無法找到究竟是什麼導致我得到一個NaN,當我使用的一切都是數字。 –
無論如何,我想幫助查明問題,但如果沒有'didItHit','multiplicativeMultiplier'和其他類似的功能,我會在那裏看到我無法複製我身邊的錯誤。你傳遞一些字符串給函數。也許其中一個在這些計算中被錯誤地視爲數字,這就是爲什麼你會得到'NaN' – Adelin