Javascript是否支持PHP中的短三元组(而不是变体)?

Dan*_*ugg 25 javascript php ternary-operator short-circuiting

我已经厌倦了PHP对"短三元"的支持,省略了第二个表达式:

// PHP

$foo = 'hello';
$bar = '';

echo $foo ?: 'world'; // hello
echo $bar ?: 'world'; // world
Run Code Online (Sandbox Code Playgroud)

Javascript是否支持这样的语法?我试过?:导致语法错误.我知道布尔短路,但这对我目前正在做的事情是不可行的; 那是:

// Javascript

var data = {
    key: value ?: 'default'
};
Run Code Online (Sandbox Code Playgroud)

有什么建议?(我可以将它包装在一个立即调用的匿名函数中,但这看起来很愚蠢)

Leo*_*nid 45

var data = {
    key: value || 'default'
};
Run Code Online (Sandbox Code Playgroud)

  • 请记住,这可能并不总是按预期工作.例如,如果`value = 0`,那么`data.key`将评估为''default'`.如果`0`是`data.key`的有效值,这可能不是你想要的. (5认同)
  • @Bracketworks:想到Python和Lisp.虽然可能还有更多,我只是不知道那么多语言;) (3认同)

jim*_*mbo 15

是的,使用||.与PHP不同,JavaScript的||运算符将返回第一个非伪值,而不是规范化的布尔值.

foo || 'world'
Run Code Online (Sandbox Code Playgroud)

  • 是的,嗯,这是我为解释它而付出的代价,而不仅仅是写答案. (3认同)