常に値を割り当てるわけではありませんがe、計算に使用しています。正しくインデントされたコードは次のとおりです。
function calculateMB(num,charge,fixed)
{
if(num>50)
var e = num - 50;
var new_e = e * charge;
new_var = new_e / 20;
return (new_var + fixed);
}
numが<=50の場合e、値を取得することはありません(したがって、デフォルトのままになりますundefined)。したがって、e * chargeは、残りの計算全体NaNにNaN伝播します。
あなたはおそらく欲しい:
function calculateMB(num,charge,fixed)
{
var e, new_e, new_var;
e = (num > 50) ? num - 50 : num;
new_e = e * charge;
new_var = new_e / 20;
return new_var + fixed;
}
そこでの変更:
私はすべてのvarステートメントを一番上に置きます。それが実際にそこにあるからです。
私はnew_var、あなたがまったく宣言していなかった、暗黙のグローバルの恐怖の餌食になると宣言しました。
e常に値が割り当てられるようにしました。いつになりたかったと思いますがe、必要に応じて調整してください。numnum <= 50
コードを一貫してインデントしました。一貫性のあるコードインデントのようなことを行うと、バグを回避し、他の人があなたのコードを理解するのに役立ちます。強くお勧めします。