如果里面 return
If inside return
是否可以将 if
条件添加到 return
中,以便根据布尔值 flag
它是在函数内部返回的,如
return { val1: 'aaa', val2: 'bbb'}
或
return { val1: 'aaa', val2: 'bbb', val3:'ccc'}.
当然可以
if (flag) {
return { val1: 'aaa', val2: 'bbb'}
} else {
return { val1: 'aaa', val2: 'bbb', val3:'ccc'}.
}
但是我不喜欢它,因为它有太多的属性(不仅仅是示例中的 val1
、val2
,还有更多)所以有一个巨大的块将在这种情况下被复制。
有什么想法吗?
谢谢。
这是一个常见的问题。
干净的解决方案是声明您的对象:
var vals = { val1: 'aaa', val2: 'bbb'};
if (flag) vals.val3 = 'ccc';
return vals;
它也是模仿底层逻辑的东西。
尝试:
var obj = { val1: 'aaa', val2: 'bbb'};
if (!flag) {
obj.val3 = 'ccc';
//any other changes to the object you might want to add
}
return obj;
如果您有很多属性,您可以尝试 extend
您的基本对象和包含额外属性的对象,例如使用 jQuery.extend()
使用下划线你可以这样做:
return _.extend({ val1: 'aaa', val2: 'bbb' }, flag ? {} : { val3: 'ccc' });
是否可以将 if
条件添加到 return
中,以便根据布尔值 flag
它是在函数内部返回的,如
return { val1: 'aaa', val2: 'bbb'}
或
return { val1: 'aaa', val2: 'bbb', val3:'ccc'}.
当然可以
if (flag) {
return { val1: 'aaa', val2: 'bbb'}
} else {
return { val1: 'aaa', val2: 'bbb', val3:'ccc'}.
}
但是我不喜欢它,因为它有太多的属性(不仅仅是示例中的 val1
、val2
,还有更多)所以有一个巨大的块将在这种情况下被复制。
有什么想法吗? 谢谢。
这是一个常见的问题。
干净的解决方案是声明您的对象:
var vals = { val1: 'aaa', val2: 'bbb'};
if (flag) vals.val3 = 'ccc';
return vals;
它也是模仿底层逻辑的东西。
尝试:
var obj = { val1: 'aaa', val2: 'bbb'};
if (!flag) {
obj.val3 = 'ccc';
//any other changes to the object you might want to add
}
return obj;
如果您有很多属性,您可以尝试 extend
您的基本对象和包含额外属性的对象,例如使用 jQuery.extend()
使用下划线你可以这样做:
return _.extend({ val1: 'aaa', val2: 'bbb' }, flag ? {} : { val3: 'ccc' });