函数声明对象并返回它

时间:2016-01-18 14:03:08

标签: javascript

每次我编写一个函数,其唯一目的是返回一个配置对象时,我就这样写:

function getConfig() {
  return {
    bar: 'bar',
    foo: 'foo'
  }
}

似乎合乎逻辑吗?如果我以后想要添加属性,我只需将它们直接添加到对象文字中。如果我想添加函数,我在getConfig中使用匹配的函数声明在对象文字中添加它们的引用:

function getConfig() {
  return {
    bar: 'bar',
    foo: 'foo',
    getBaz: getBaz
  }

  function getBaz() {
     //get baz
  }
}

然而,很多时候,当我查看其他人的代码时,我看到具有类似目的的函数,但他们经常首先声明对象,然后只返回对象引用:

function getConfig() {
  var config = {
    bar: 'bar',
    foo: 'foo'
  }
  return config;
}

我是否缺少某种性能提升或其他“技巧”?当然,编写这些函数的人必须意识到返回对象文字会更容易,更易读。

1 个答案:

答案 0 :(得分:0)

在您的精简示例中,确实没有区别。但有些情况下,声明一个对象变量然后返回它是有意义的。

例如,如果要创建哈希,最好使用null原型创建对象:

function getConfig() {
  var config = Object.create(null);
  config.bar = 'bar';
  config.foo = 'foo';

  return config;
}

还有可读性的问题。如果您正在创建的对象具有多层嵌套层次结构,则对象文字可能会让您感到困惑。

我们也考虑调试。如果您的财产分配是可能失败的表达怎么办?如果您创建一个对象,然后在各自的行中进行分配,则可以非常快速地确定问题。

最后,不同的程序员有不同的偏好。除非你的组织有风格指南,否则对这类事情会有不同意见 - 甚至可能 都有风格指南。