Javascript简写三元运算符

时间:2012-01-16 17:45:20

标签: javascript ternary-operator

我知道在php 5.3中,而不是使用这种冗余的三元运算符语法:

startingNum = startingNum ? startingNum : 1

...我们可以在适用的情况下为我们的三元运算符使用简写语法:

startingNum = startingNum ?: 1

我知道javascript中的三元运算符:

startingNum = startingNum ? startingNum : 1

......但有简写吗?

谢谢你们!

9 个答案:

答案 0 :(得分:135)

var startingNumber = startingNumber || 1;

你正在寻找什么,如果未定义它默认为什么?

var foo = bar || 1; // 1
var bar = 2;
foo = bar || 1;     // 2

顺便说一句,这适用于很多场景,包括对象:

var foo = bar || {}; // secure an object is assigned when bar is absent

答案 1 :(得分:21)

||将返回它遇到的第一个truthy值,因此可以用作合并运算符,类似于C#的??

startingNum = startingNum || 1;

答案 2 :(得分:10)

是的,有:

var startingNum = startingNum || 1;

通常,expr1 || expr2按以下方式工作(如the documentation所述):

  

如果可以转换为expr1,则返回true;否则,返回expr2因此,当与Boolean值一起使用时,||如果任一操作数为true,则返回true;如果两者都是false,则返回false

答案 3 :(得分:3)

随着 ES2020 的加入:

w/Nullish Coalescence:$crypto_news = CryptoNews::where('status', '=', 1) ->where('urlToImage', '!=', 'no_preview.png') ->where('urlToImage', '!=', '') ->where('lang', 'en')->where('id', '!=', $id) ->orderBy('publishedAt', 'desc')->simplePaginate($limit);

旧操作:const difficulty = var?.nest[i]?.prop ?? false

属性前的问号将首先检查对象是否存在(如果您不确定它是否存在:就像在 API 数据中一样),如果缺少对象,它将返回 const difficulty = var.nest[i].prop ? var.nest[i].prop : false

undefined 检查左侧的值是 ?? 还是 null,如果是,则返回右侧提供的值。

答案 4 :(得分:1)

var startingNum = startingNum || 1;

在这种情况下,您可以使用OR运算符。

答案 5 :(得分:1)

startingNum = startingNum || 1

如果您的条件为null,例如

startingNum = startingNum ? startingNum : null

您可以使用'&&'

startingNum = startingNum && startingNum

答案 6 :(得分:0)

以上答案是正确的。在JavaScript中,以下语句:

startingNum = startingNum ? otherNum : 1

可以表示为

startingNum = otherNum || 1

此处未涉及的另一个方案是,如果您希望值在未匹配时返回false。 JavaScript的简写是:

startingNum = startingNum ? otherNum : 0

但它可以表示为

startingNum = startingNum && otherNum

只是想覆盖另一种情况,以防其他人正在寻找更广泛的答案。

答案 7 :(得分:0)

制作三元组:

boolean_condition ? true_result : false_result

在javascript中,你可以这样做:

(boolean_condition && true_result ) || false_result;

示例:

(true && 'green') || 'red';
=> "green"
(false && 'green') || 'red';
=> "red"

答案 8 :(得分:0)

在大多数现代浏览器中,您现在可以使用:

startingNum ??= 1;

这只会更改startingNumnull的{​​{1}}。

请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Logical_nullish_assignment