Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javascript变量初始化显示NaN_Javascript_Initialization_Var - Fatal编程技术网

javascript变量初始化显示NaN

javascript变量初始化显示NaN,javascript,initialization,var,Javascript,Initialization,Var,大家好 结果是NaN。但是,如果我用sum=0初始化sum,结果是15。为什么JS不识别数组中的值类型并为我进行初始化?为什么在第一种情况下返回NaN 当您创建var sum时,感谢您其值未定义[默认值] 因此,当您继续添加未定义的时,您会得到NaN[不是一个数字] 但是如果您初始化为var sum=0 然后将数字添加到0,以便获得正确的输出 试一试 console.log(未定义+1)你得到了NaN但是 如果你这样做 console.log(0+1)然后您得到1这是因为您尚未初始化sum。因此

大家好

结果是NaN。但是,如果我用sum=0初始化sum,结果是15。为什么JS不识别数组中的值类型并为我进行初始化?为什么在第一种情况下返回NaN


当您创建var sum时,感谢您其值未定义[默认值]

因此,当您继续添加未定义的时,您会得到
NaN
[不是一个数字]

但是如果您初始化为
var sum=0

然后将数字添加到0,以便获得正确的输出

试一试

console.log(未定义+1)你得到了NaN但是

如果你这样做


console.log(0+1)然后您得到
1

这是因为您尚未初始化
sum
。因此,
sum+
将尝试添加到
未定义的

function sumArray(numbers){
  var sum;
  for(var i in numbers){
      sum += numbers[i];
  }
  return sum;
}

console.log(sumArray([1,2,3,4,5]));

背后的原因很清楚。当JavaScript发现任何“未定义”或“意外”错误时,它将返回NaN


除此之外,在第二个条件中,当您添加sum=0时,它已经对它进行了一个值,而您所做的任何操作都是对该值进行添加。

当在当前范围内声明变量时,它将使用
未定义的
值进行初始化

    function sumArray(numbers){
      var sum=0;      // sum="" if you want output as 12345
      for(var i in numbers){
          sum += numbers[i];
      }
      return sum;
    }

console.log(sumArray([1,2,3,4,5]));
for
循环中,加法
sum+=numbers[i]
实际上执行的是
undefined+1
操作。由于这两个操作数都不是字符串类型,因此会将它们转换为数字:

  • 未定义
    +1
  • NaN
    +1
  • NaN
  • 请查看本文以了解更多关于(示例7)的信息

    当然,要解决此问题,只需使用0初始化它:

    var sum; // is initialized with undefined 
    
    此外,我还将对以下项目进行总结:

    var sum = 0;
    

    未定义+anything=NaNInitialize
    var和=0
    
    var sum = [1,2,3,4,5].reduce(function(sum, item) { 
      return sum + item; 
    });