javascript 而将两个数相乘并存储到该数中最终得到NaN的结果

nnsrf1az  于 2023-01-29  发布在  Java
关注(0)|答案(1)|浏览(239)

当iam使用+=运算符时,乘法结果为NaN

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);
        }

**控制台,结果中不输入+=

每次迭代的结果值

8
4
2
1

**但是在我放+=**之后

result+=(power*num);

输出为

NaN
NaN
NaN
NaN

任何人都可以解释这一点,请,我是新的javaScript,所以可能是一个愚蠢的问题

odopli94

odopli941#

发生这种情况是因为result变量没有初始值,所以它以undefined开始,然后第一次执行+=时,它试图给undefined加一个数字,结果是NaN
您的问题可以通过以下简化代码重现:

var result;

for (let i = 0; i < 4; i++) {
    result += 1;
    console.log(result);
}

因此初始化为var result = 0

var result = 0;

for (let i = 0; i < 4; i++) {
    result += 1;
    console.log(result);
}

相关问题