为什么当我在console.log(createdAnimal)中得到未定义时?

时间:2015-11-28 07:16:50

标签: javascript function

我在这段代码中想要实现的是能够使用console.log(createdAnimal),然后使用这些参数获取打印出objectAnimal的代码:

animalMaker('cat','flying',true);

当我调用animalMaker函数时它会起作用,但是当我在console.log(createdAnimal)时我需要它才能工作。

提前谢谢!

以下是代码:

function animalMaker(inputType, inputSuperPower, inputCanFly){
  var objectAnimal = {
    'type': inputType,
    'inputSuperPower': inputSuperPower,
    'inputCanFly': inputCanFly,
    'createdBy': 'Scotty'
  };
  console.log(objectAnimal)
}

var createdAnimal = animalMaker('cat','flying',true); 

console.log(createdAnimal);

2 个答案:

答案 0 :(得分:4)

您需要从函数返回对象:

function animalMaker(inputType, inputSuperPower, inputCanFly){
  var objectAnimal = {
    'type': inputType,
    'inputSuperPower': inputSuperPower,
    'inputCanFly': inputCanFly,
    'createdBy': 'Scotty'
  };

  return objectAnimal;
}

答案 1 :(得分:3)

截至目前,您的animalMaker函数未返回任何内容,并且在未返回值时,函数默认会在javascript中返回undefined
因此,当使用animalMaker函数返回的值设置变量时,该值将为undefined

要将createdAnimal变量设置为objectAnimal的值,您需要从函数返回它。您可以通过使用return语句结束animalMaker函数来执行此操作:

return objectAnimal;  

请记住,函数子句中的return语句之后的代码永远不会执行,return结束函数:

function example() {
    return true;
    console.log('This will never be printed');
}