将函数从 obj 传递到数组中.然后添加数组,但结果是 NaN.为什么

Passing function from obj into array. Then add up array but result is NaN. Why?

本文关键字:数组 添加 结果是 为什么 NaN 然后 obj 函数      更新时间:2023-09-26

这是代码:

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,如果是,我应该将其应用于哪个变量?提前谢谢。

您没有从函数返回任何值 h 因此它返回未定义,当添加时会导致 NaN,请尝试:

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

还要考虑对作用域中定义的变量使用 var 关键字,否则最终会污染全局变量。

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