javascript - 将函数从 obj 传递到数组。然后将数组相加,但结果为 NaN。为什么?

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

最佳答案

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

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

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

由于您要为变量分配数值,因此不需要使用 parseInt 解析它们

关于javascript - 将函数从 obj 传递到数组。然后将数组相加,但结果为 NaN。为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19988001/

相关文章:

php - 将对象转换为数组 - 调用任何魔术方法?

javascript - 按日期顺序对nodejs中的数组进行排序(从最近到最旧)

php - 如果存在则更新,否则插入(没有 ON DUPLICATE KEY UPDATE)

c++ - 在 C++ 代码中计算斐波那契数列

javascript - 如何访问 "parent"中的方法?

javascript - 为什么在 "contents"之前使用逗号

function - Erlang - 未定义的函数

c - 如何将一维数组插入到函数中

javascript - 如果不存在则加载 Angular

javascript - 如果值大于、小于并再次大于