将函数从obj传递到数组中。然后加上数组但结果是NaN。为什么?

时间:2013-11-14 20:45:01

标签: javascript arrays function object

以下是代码:

var myObject = {
  x: 5,
  h: function(){
     varOne = 2*2;
     varTwo = 3*2;
     varThree = varOne*varTwo;
     },
  d: 4
};

var g = myObject.h();
var xyz = g;
var abc = 2;
var efg = 3;
var somearray = [xyz,abc,efg];
var z =  0;
for(i=0; i<somearray.length; i++){
    z += somearray[i];   
}

结果是NaN。为什么是这样?如果我这样做: h:function(){return 2 * 2;},然后我没有问题。我是JS的新手,我花了很多时间在网上搜索无济于事的答案。我是否需要使用parseInt或parseFloat,如果是,我应该使用哪个变量?提前谢谢。

1 个答案:

答案 0 :(得分:5)

您没有从函数h返回任何值,因此它返回undefined,当在NaN中添加结果时,请尝试:

h: function(){
   var varOne = 2*2;
   var varTwo = 3*2;
   return  varOne*varTwo;
 },

另外,请考虑对范围中定义的变量使用var关键字,否则最终会污染全局。

由于您要为变量分配数值,因此无需使用parseInt

解析它们