分配给变量的javascript函数调用返回undefined

时间:2015-12-13 16:47:54

标签: javascript testing undefined mocha

我试图在测试环境(Mocha)中运行一个函数,并且当它被分配给一个变量时调用我的函数时遇到了问题(设置的测试执行变量赋值)。我确定在其他地方已经回答了这个问题,但我看到的每个例子都是异步函数,但事实并非如此。以下代码返回对象,但也未定义。我怀疑它是" undefined"阻止我的代码在测试套件中运行的输出。未定义来自何处,是来自return语句或console.log调用的正确输出?

var addTo = function(obj){
  var object = {};
  for(var i = 0; i<arguments.length; i++){
    for(key in arguments[i]){
      if(arguments[i].hasOwnProperty(key)){
        object[key] = arguments[i][key];
      }
    }
  }
  return object;
}

var myObj = addTo({name: "John"}, {location: "space", age: 35});
console.log(myObj);

//returns:  
//Object {name: "John", location: "space", age: 35}
//undefined

我知道没有必要在这里创建一个空对象,因为我可以添加到输入到函数中的第一个对象并在i = 1处启动for循环。只是尝试修复未定义的问题(这只是我认为的问题)。如果这是重复的,请将我链接到正确的帖子,因为我找不到它。

1 个答案:

答案 0 :(得分:0)

控制台评估表达式并打印出来。由于console.log不返回任何内容,因此它显示为undefined。

  1. 你忘记了'key'变量前面的var。这使它成为全球性的。
  2. 我看到你使用分号,所以在第11行上添加一个。