分配给变量的javascript函数调用返回未定义的

分配给变量的javascript函数调用返回未定义的,javascript,testing,undefined,mocha.js,Javascript,Testing,Undefined,Mocha.js,我试图在测试环境(Mocha)中运行一个函数,但在将函数分配给变量(设置的测试执行变量分配)时调用该函数时遇到问题。我相信这已经在其他地方得到了回答,但我看到的每个示例都是异步函数,而事实并非如此。下面的代码返回该对象,但也未定义。我怀疑是“未定义”的输出阻止了我的代码在测试套件中运行。未定义的输出来自哪里,正确的输出来自return语句还是console.log调用 var addTo = function(obj){ var object = {}; for(var i = 0; i

我试图在测试环境(Mocha)中运行一个函数,但在将函数分配给变量(设置的测试执行变量分配)时调用该函数时遇到问题。我相信这已经在其他地方得到了回答,但我看到的每个示例都是异步函数,而事实并非如此。下面的代码返回该对象,但也未定义。我怀疑是“未定义”的输出阻止了我的代码在测试套件中运行。未定义的输出来自哪里,正确的输出来自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
var addTo=函数(obj){
var对象={};

对于(var i=0;i,控制台计算表达式并打印该表达式。由于console.log不返回任何未定义的内容,因此它会显示未定义的内容

  • 您忘记了“key”变量前面的var。这使它成为全局变量
  • 我看到您使用分号,所以在第11行的}之后添加一个分号

  • 你确定
    undefined
    不仅仅是测试环境中
    console.log()
    函数调用的返回吗?我在Chrome控制台上运行时看到了未定义的,因为我从测试环境得到的只是一个rex“X”表示函数未通过测试。我不确定您是如何运行此函数的,但如果键入
    console.log()
    在控制台中,您将返回
    未定义的
    ,因为这是函数返回的结果,我想这就是您看到的,但我不确定?您用“key”变量前面的var击中了要害。非常感谢!