声明对象并返回它的函数
Function declaring object and returning it
每次我编写一个函数的唯一目的是返回一个配置对象时,我都是这样写的:
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;
}
我在这里缺少某种性能改进或其他"技巧"吗?当然,编写这些函数的人必须意识到,只返回对象文字会更容易、更易读。
在您的精简示例中,实际上没有区别。但在某些情况下,声明一个对象变量然后返回它是有意义的。
例如,如果要创建哈希,最好使用空原型创建对象:
function getConfig() {
var config = Object.create(null);
config.bar = 'bar';
config.foo = 'foo';
return config;
}
还有可读性问题。如果要创建的对象具有多个级别的嵌套层次结构,则对象文本可能会变得难以阅读。
让我们也考虑调试。如果属性赋值是可能失败的表达式,该怎么办?如果您创建一个对象,然后在其自己的行上执行每个分配,则可以非常快速地确定问题。
最后,不同的编码人员有不同的偏好。除非你的组织有风格指南,否则在这样的事情上会有意见分歧——即使它确实有风格指南。
相关文章:
- ES6构造函数返回基类的实例
- 从函数返回角度承诺
- 如何从jquery函数返回变量
- 根据是否解析了 Promise 从函数返回值
- Javascript函数返回未定义
- 如果函数返回True,则显示Javascript按钮
- Google Sheet自定义函数返回0
- 从Ajax函数返回值
- 使用for循环从Javascript中的函数返回多个值
- 谷歌地图:函数返回未定义的值在console.log中运行良好
- 从函数中的函数返回数组时出错
- 如何从嵌套的API函数返回值
- 从Mongoose结果匿名函数返回父函数
- 函数返回错误'令牌{'
- Jquery函数返回订单问题
- Mocha/Chai测试链接到函数返回断言错误
- 从异步函数返回值
- 函数返回后更新变量
- 我如何才能继续'如果'语句来比较作为参数的多个函数返回值
- 将外部函数返回的id传递给内部函数