Javascript将两个数字相乘返回NaN 我是一个C++和java程序员,这是我第一次尝试用JavaScript做一些事情。我有一个保存数组的对象,还有一个函数,应该返回数组的长度 var graphData = { labels : ["label1", "label2", "label3"], numData : function() { return (Number(this.labels.length));} }

Javascript将两个数字相乘返回NaN 我是一个C++和java程序员,这是我第一次尝试用JavaScript做一些事情。我有一个保存数组的对象,还有一个函数,应该返回数组的长度 var graphData = { labels : ["label1", "label2", "label3"], numData : function() { return (Number(this.labels.length));} },javascript,function,object,nan,Javascript,Function,Object,Nan,现在我要做的是根据这个数组的大小调整div的大小 我有 var barWidth = 13; var viewWidth = barWidth * graphData.numData; 现在这根本不起作用。当我检查viewWidth的类型时,它返回NaN。我还尝试将操作数“强制转换”为Number(),但没有成功。我做错了什么?您必须将函数调用为graphData.numData(),而不是graphData.numData,因为它不是属性,这样可以解决问题 var graph

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

我有

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

现在这根本不起作用。当我检查viewWidth的类型时,它返回NaN。我还尝试将操作数“强制转换”为Number(),但没有成功。我做错了什么?

您必须将函数调用为
graphData.numData()
,而不是
graphData.numData
,因为它不是属性,这样可以解决问题

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

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

您确定graphData的定义与您在此处的定义完全一致吗?因为返回和分号在同一行的末尾是两个语法错误。谢谢我做了编辑。所以你有一个函数。您还必须调用该函数。
this.labels.length
已经是一个
数字。为什么要强制转换它?请解释问题和解决方案。@vjdhama我实际上将它包含在函数表达式中。解决方案中的另一个因素是,在
graphData中。numData
是函数,而不是数字。因此,
barWidth*graphData.numData
将生成一个
NaN
,但是
barWidth*graphData.numData()
将检索所需的值,然后将其乘以
barWidth