Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么在使用对象初始值设定项记录带有对象的自定义函数时会得到未定义的值?_Javascript - Fatal编程技术网

Javascript 为什么在使用对象初始值设定项记录带有对象的自定义函数时会得到未定义的值?

Javascript 为什么在使用对象初始值设定项记录带有对象的自定义函数时会得到未定义的值?,javascript,Javascript,我正在学习更多关于JavaScript中对象的知识,并学会了创建如下对象: const myObject = { foo: 'bar', answerToUniverse: 42, 'olly olly': 'oxen free', sayHello: function() { return 'hello'; }, }; function createMyObject() { const myObject = { foo: '

我正在学习更多关于JavaScript中对象的知识,并学会了创建如下对象:

const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
function createMyObject() {
  const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
}

console.log(createMyObject());
function createMyObject() {
  return {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
}
所以我想我可以在自定义函数中创建相同类型的对象,如下所示:

const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
function createMyObject() {
  const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
}

console.log(createMyObject());
function createMyObject() {
  return {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
}
但是当我记录它时,我得到了未定义的

我知道更好的写作方式是这样的:

const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
function createMyObject() {
  const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
}

console.log(createMyObject());
function createMyObject() {
  return {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
}

但是,难道没有一种方法可以在代码中使用对象初始值设定项在自定义函数中成功创建对象吗?它似乎应该可以工作。

如果函数没有以
return
语句结尾,那么它与以
return undefined结尾是一样的因此您的代码相当于:

function createMyObject() {
  const myObject = {
    foo: 'bar',
    answerToUniverse: 42,
    'olly olly': 'oxen free',
    sayHello: function() {
      return 'hello';
    },
  };
  // myObject is never used.
  // it is also not visible outside this function,
  // so declaring it here has no effect unless it
  // is returned from the function.
  return undefined;
}

console.log(createMyObject()); // simplifies to console.log(undefined);

看起来你已经回答了自己的问题。如果要将
createMyObject()
的返回值记录到控制台,它需要返回一些内容。你在上一个例子中就是这么做的。两个示例都成功创建了一个对象。其中一个从函数返回该对象,另一个没有。你的问题没有意义。您的第一个函数创建了一个对象,但该对象只存在于该函数中,因为您不会将其返回到函数外部…
returnmyobject…没错,埃里克,所以让我等了4分钟才可以标记并投票。再次感谢!