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
相关产品推荐
相关产品推荐

