Javascript三元运算符(?:)在单个块中更改并返回对象

Javascript三元运算符(?:)在单个块中更改并返回对象,javascript,Javascript,是否可以在?:中更改字典并在同一块中返回此字典。像这样的a>b 你可以这样做 这可以用?:这样缩短: var result = a > b ? methodOne() : methodTwo(); methodOne()和methodTwo()可以返回结果 希望这能对您有所帮助。是的,您可以通过以下方式来实现: a>b?(dict['c']=“我变了”,dict):; 逗号运算符计算其所有操作数并返回最后一个(最右边)操作数的值 然而,一个合适的if语句可能是这里更具可读性的解决方案

是否可以在
?:
中更改字典并在同一块中返回此字典。像这样的
a>b 你可以这样做

这可以用?:这样缩短:

var result = a > b ? methodOne() : methodTwo();
methodOne()和methodTwo()可以返回结果


希望这能对您有所帮助。

是的,您可以通过以下方式来实现:

a>b?(dict['c']=“我变了”,dict):;
逗号运算符计算其所有操作数并返回最后一个(最右边)操作数的值



然而,一个合适的
if
语句可能是这里更具可读性的解决方案,这就是为什么我建议您使用它而不是构造一个条件(“三元”)表达式

a > b ? (d) => {d['c'] = 'I'm changed'; return dict;}(dict): <some other code>;
a>b?(d) =>{d['c']='I'm change';返回dict;}(dict):;
>var d={}

>2<3?((d)=>{d.a=2;返回d;})(d):5

>对象{a:2}


逗号运算符应该足够了。无需使用
return
关键字

var result = (a > b
  ? (dict['c'] = "I'm changed", dict)
  : <some other code> );
var结果=(a>b)
(dict['c']=“我变了”,dict)
:  );
如果要返回结果,则它将超出表达式:

return (a > b
  ? (dict['c'] = "I'm changed", dict)
  : <some other code> );
返回(a>b
(dict['c']=“我变了”,dict)
:  );

也就是说,我更喜欢使用if语句来解决这个问题。在我看来,长的三元表达式很难理解。

从三元表达式返回是没有意义的。可能会显示实际的代码。添加了实际的案例这种构造的目的是编写更少的代码。我认为实现2个附加方法可能更具可读性,但需要做更多的工作。所以我不确定它是否适合那里
var result = (a > b
  ? (dict['c'] = "I'm changed", dict)
  : <some other code> );
return (a > b
  ? (dict['c'] = "I'm changed", dict)
  : <some other code> );