You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中使用+=运算符时乘法结果为NaN的原因咨询

为什么JavaScript中使用result+=(power*num)会得到NaN?

我在JavaScript中编写了convertToDecimal方法,代码如下:

convertToDecimal(){
    let current=this.head;
    let size=this.size;
    size-=1;
    var result;
    while(current!=null){
        let num=current.value; 
        var power=Math.pow(2,size)
        result=(power*num);
        size-=1;
        current=current.next;
    }
    // console.log(result);
}

当直接使用result=(power*num);赋值时,每次迭代的result输出为:

8
4
2
1

但将赋值方式改为result+=(power*num);后,每次迭代的result输出全为NaN。我是JavaScript新手,希望有人能解释这一现象的原因。


原因分析

  • 你只声明了var result;但没有初始化,所以它的初始值是**undefined**。
  • 用result = (power*num)时,每次都是直接给result赋值一个新的数字,所以每次迭代都能得到有效的数值。
  • 而result += (power*num)等价于result = result + (power*num),第一次执行时,undefined和数字做加法运算,结果会变成NaN(非数字)。后续所有迭代中,NaN和任何数值运算的结果依然是NaN,所以输出全是NaN。

解决办法

只需要给result初始化一个初始值0即可:

var result = 0;

内容的提问来源于stack exchange,提问作者ABIN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:15:40