【问题标题】:What am I doing wrong with arrays?我对数组做错了什么?
【发布时间】:2016-07-03 12:09:44
【问题描述】:

我对 JavaScript 和 Node.JS 都很陌生,我真的不明白为什么我会使用以下表达式得到 NaN

var aUsersBetted = {};
aUsersBetted['1337'] += 200000;
logger.debug(aUsersBetted['1337']);

执行此操作后,它会在控制台中打印 NaN。我现在真的很困惑。顺便问一下这个愚蠢的问题。

【问题讨论】:

  • 没有 leet 元素可以添加。
  • 这是一个对象,不是数组
  • 如果我输出整个数组,它会说:{ '1337': NaN }.
  • 提示:undefined + 1 是什么?和0 + 1不一样。

标签: javascript node.js


【解决方案1】:

让我们逐行看。

这个var aUsersBetted = {}; 创建一个对象,而不是一个数组。

aUsersBetted['1337'] += 200000; 将 200000 添加到与键 1337 关联的值。

由于您在使用之前没有定义键,因此它的值也未定义。因此,您尝试将未定义的值添加到数字中。这就是您收到此错误的原因。

一种可能的解决方法是初始化 1337 的值,例如:

aUsersBetted['1337'] = 0;

然后你的表达式 aUsersBetted['1337'] += 200000; 会将 200000 添加到 0 并将其设置到内存中 aUsersBetted['1337'] 指向的位置的后面。

【讨论】:

  • @Purixi 根本不是问题。我很高兴能帮上忙:)
【解决方案2】:

首先,将您的对象值初始化为 0。您正在尝试将 200000 添加到未定义的值。

var aUsersBetted = {};
aUsersBetted['1337'] = 0;
aUsersBetted['1337'] += 200000;
window.console.log(aUsersBetted['1337']);

在这里测试:https://jsfiddle.net/hjqvwfwt/

【讨论】:

    【解决方案3】:

    您没有初始化变量 aUsersBetted['1337']。

    JavaScript 尝试这样做:undefined+200000

    你想要什么:0+200000

    用途:

    aUsersBetted['1337'] = 0;
    aUsersBetted['1337'] += 200000;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-01
      • 2017-07-05
      • 2010-11-07
      • 1970-01-01
      • 2020-09-08
      • 1970-01-01
      相关资源
      最近更新 更多