javascript变量初始化显示NaN

2023-12-03

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

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

Hi all,

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

Thanks


当变量在当前作用域内声明时,它会被初始化为undefined value.

var sum; // is initialized with undefined 

In the for循环,加法sum += numbers[i]实际上正在做一个undefined + 1手术。由于两个操作数都不是字符串类型,因此它们都转换为数字:

  1. undefined + 1
  2. NaN + 1
  3. NaN

请查看这篇文章以获取更多信息加法运算符(示例 7)。

当然,要解决这个问题只需将其初始化为0即可:

var sum = 0;

另外我会把这些项目总结得更简单:

var sum = [1,2,3,4,5].reduce(function(sum, item) { 
  return sum + item; 
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript变量初始化显示NaN 的相关文章

随机推荐

  • 重复时间序列数据的 Pandas 滚动中位数

    我看到 Pandas 不允许重复的时间序列索引 yet https github com pydata pandas issues 643 但很快就会添加 我想知道是否有一种好方法可以通过多索引标签 列将滚动窗口方法应用于具有重复时间的数据
  • parseInt() 和 parseFloat() 位于哪里?

    当我在控制台中按 TAB 时 我看到了 parseInt 和 parseFloat 我只需输入 parseInt 123asd 但这些位于哪里 它们是全局对象的属性 内置函数 对于浏览器来说 这是window
  • 字符串作为数组索引

    In 3 XoePhoenix 数组索引是字符数组类型 我们可以用 C 来做这个吗 数组索引不是必须是整数吗 什么是3 XeoPhoenix mean 3 XoePhoenix 是相同的 XoePhoenix 3 所以它将评估为 char
  • IE10、11 带连字符的 CDATA 解析错误

    我遇到过这样的问题 当尝试解析从服务器收到的 xml 时 CDATA 块中包含的消息在 IE10 11 中解析 直到找到第一个连字符 请参阅我收到的 XML 示例
  • Chrome headless 忽略系统代理

    编辑 这是演示该问题的 YouTube 视频 https youtu be MIZjHKCVr1s 我正在使用 headless 标志与 chrome 一起运行 selenium 但显然使用 headless 似乎会忽略系统代理 我之前在
  • 将数组中的对象推入循环内[重复]

    这个问题在这里已经有答案了 几个小时以来 我一直在尝试解决这个问题 但我似乎确实无法成功 我正在尝试创建一个 JSON 字符串 如下所示 但是在传递变量的值时obj到变量j我得到的数组仅包含该循环的最后一个结果 而不是得到如下结果 mach
  • SCI - 系统控制中断向量是如何定义的?

    根据 ACPI 规范 FADT 固定 ACPI 描述表 表包含一个字段 用于报告SCI中断操作系统的编号 该字段定义如下 我在 Intel x86 平台上转储了 FADT 表 看到 SCI 中断与编号相关联9 但根据英特尔手册 0 31是
  • matplotlib 动态子图数量

    我正在尝试使用以下方法获取子图matplotlib 数量为subplots在运行时计算 如pnum以下示例有所不同 pnum len args m f ax1 ax2 plt subplots pnum sharex True sharey
  • 从 iOS 导出椭圆曲线密钥以与 OpenSSL 配合使用

    我生成了私钥 公钥对并将其存储在 Secure Enclave 内 它是 256 位椭圆曲线密钥 唯一可以存储在 Secure Enclave 中的密钥类型 I use SecKeyCreateWithData and SecKeyCopy
  • 使用主机 SSH 密钥在 DockerFile 中访问私有 Git 存储库

    我是 Docker 新手 正在尝试让我的 Angular Web 应用程序在容器中构建和运行 我在项目的根目录中有一个非常基本的 Dockerfile 如下所示 Create the image based on the official
  • 如何用C#将委托排队在后台串行执行?

    从游戏循环中 我想在后台开始工作 该工作应该一个接一个地执行 但不应阻止游戏循环 所以理想情况下是一个类BackgroundQueue可以这样使用 BackgroundQueue myQueue new BackgroundQueue ga
  • R构建文档术语矩阵如何匹配其值由空格分隔的短语组成的字典

    当使用R进行文本挖掘时 在对文本数据进行重新处理后 我们需要创建一个文档术语矩阵以供进一步探索 但是和中文类似 英语也有一些特定的阶段 比如 语义距离 机器学习 如果把它们分词成词 它的含义就完全不同了 我想知道如何匹配预先定义的词典值由空
  • 将字符串转换为 HTML - 字符串转换为“a href”元素

    您好 我在将一些 HTML 链接添加到我的 HTML 页面时遇到一些问题 我尝试四处寻找 但到目前为止没有任何帮助 我的页面最初将加载一个片段 div style display inline block color rgb 0 255 1
  • php默认时区错误

    我在尝试安装 Kohana SilverStripe 时收到以下错误 警告 这意味着什么 我该怎么做 Warning date default timezone get It is not safe to rely on the syste
  • SFINAE 检查表达式是否编译并返回 std::true_type [重复]

    这个问题在这里已经有答案了 如果以下表达式编译 我想获得 std true type template
  • 将之前通过手势旋转的 UIImageView 与另一个合并。 WYS 不是 WYG

    我在尝试合并两个 UIImageView 时变得疯狂 情况 背景 UIImageView 用户照片图像视图 一个重叠的 UIImageView 产品照片图像视图 可以拉伸 挤压和 旋转的 我在 UIImages 上调用我的函数 但我可以从包
  • 解析错误:语法错误,意外的 T_ECHO

    过去几天我一直在做一些事情 但是这一段代码总是抛出一个意想不到的 T ECHO 我的朋友们似乎找不到任何问题 而我正处于耐心的边缘 即使删除了嵌套的 while 循环 它仍然会抛出错误 我切换到 while endwhile 语法也是如此
  • GORM 2.0 获取最后插入ID

    我正在使用 MySQL 数据库进行操作GORM v 2 0 我正在使用 GORM 事务将行插入数据库 tx db Begin 在之前的 GORM 版本中 Begin 回sql Tx允许使用的对象LastInsertId 查询返回参数的方法
  • 比较两个列表并从一个列表中删除重复项

    我有一个名为 FormObject 的对象 它包含两个 ArrayList oldBooks 和 newBooks 两者都包含 Book 对象 oldBooks 允许包含重复的 Book 对象 newBooks 本身不允许包含重复的 Boo
  • javascript变量初始化显示NaN

    function sumArray numbers var sum for var i in numbers sum numbers i return sum console log sumArray 1 2 3 4 5 Hi all 结果