【问题标题】:Javascript multiplication of two numbers returns NaN两个数字的 Javascript 乘法返回 NaN
【发布时间】:2015-03-09 06:09:05
【问题描述】:

我更喜欢 C++ 和 Java 程序员,这是我第一次尝试用 javascript 做一些事情。我有一个包含数组的对象,以及一个应该返回该数组长度的函数。

    var graphData = {
       labels : ["label1", "label2", "label3"],
       numData : function() {
          return (Number(this.labels.length));}
       }

现在我要做的是根据这个数组的大小调整 div 的大小。

我有

    var barWidth = 13;
    var viewWidth = barWidth * graphData.numData;

现在这行不通。当我检查 typeof viewWidth 时,它返回了 NaN。我还尝试将操作数“强制转换”为 Number() 但它没有用。我做错了什么?

【问题讨论】:

  • 您确定 graphData 的定义与您在这里所说的完全一样吗?因为返回和同一行末尾的分号将是两个语法错误。
  • 感谢我进行了编辑。
  • 所以你确实有一个功能。您还必须调用该函数。
  • this.labels.length 已经是Number。你为什么要投射它?

标签: javascript function object nan


【解决方案1】:

您必须将该函数称为graphData.numData() 而不是graphData.numData,因为它不是属性,可以解决问题。

var graphData = {
   labels : ["label1", "label2", "label3"],
   numData : function(){return +(this.labels.length);}
}

var barWidth = 13;
var viewWidth = barWidth * graphData.numData();

【讨论】:

  • 解释问题和你的解决方案。
  • @vjdhama 我实际上将它包含在函数表达式中。
  • 解决方案中的另一个因素是,graphData.numData 是一个函数,而不是一个数字。因此,barWidth * graphData.numData 将生成 NaN,但 barWidth * graphData.numData() 将检索所需的值,然后将其乘以 barWidth
猜你喜欢
  • 2021-06-04
  • 1970-01-01
  • 1970-01-01
  • 2017-09-19
  • 1970-01-01
  • 2015-03-16
  • 2015-07-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多