每次我编写一个函数,其唯一目的是返回一个配置对象时,我就这样写:
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;
}
我是否缺少某种性能提升或其他“技巧”?当然,编写这些函数的人必须意识到返回对象文字会更容易,更易读。
答案 0 :(得分:0)
在您的精简示例中,确实没有区别。但有些情况下,声明一个对象变量然后返回它是有意义的。
例如,如果要创建哈希,最好使用null原型创建对象:
function getConfig() {
var config = Object.create(null);
config.bar = 'bar';
config.foo = 'foo';
return config;
}
还有可读性的问题。如果您正在创建的对象具有多层嵌套层次结构,则对象文字可能会让您感到困惑。
我们也考虑调试。如果您的财产分配是可能失败的表达怎么办?如果您创建一个对象,然后在各自的行中进行分配,则可以非常快速地确定问题。
最后,不同的程序员有不同的偏好。除非你的组织有风格指南,否则对这类事情会有不同意见 - 甚至可能 都有风格指南。