ES6支持Elvis运算符吗?

12

Javascript / ES6是否支持Elvis运算符?

示例:

var x = (y==true) ?: 10;

示例2:

var debug = true;
debug ?: console.log("Value of x:" + x);

11
不,没有 Elvis 操作符,但你可以使用 ||——例如 var x = y || 10debug || console.log() - VLAZ
除了@vlaz所说的之外,您还可以使用一行if语句if (y === true) 10;。请注意,由于可读性不足,这不是编写if语句最流行的方式。 - Baruch
1
|| 是 Elvis 操作符。 - Salman A
@SalmanA || 只有在条件为假时才进行求值。三目运算符则在条件为真时进行求值。因此,&& 更接近于三目运算符。 - 1.21 gigawatts
@1.21吉瓦特 不行。参考维基百科上的定义,它表示如果第一个操作数为true,则返回该操作数,否则评估并返回第二个操作数。这就是||的作用:1 || 2 // 11 && 2 // 2 - Salman A
如果左手条件为真,?: 运算符将评估右手条件。 使用 || 运算符时,左侧条件必须为假才能让解释器继续并评估右侧条件。如果第一个条件为假,则评估第二个条件。如果左侧条件为真,则无需评估右侧条件。 使用 Elvis 运算符,如果左侧条件为真,则要运行右侧条件。&& 更接近 Elvis 的行为。 - 1.21 gigawatts
2个回答

12
不,但您可以使用||或&&,它们似乎执行相同的功能。
var debug = true;
debug && console.log("debug mode on ");
debug || console.log("debug mode off");

您也可以将其标记为已选择。 - Mild Fuzz

3

对于你的问题,简短的回答是“没有”。在javascript中没有Elvis运算符。但是你可以通过几种不同的方式来实现相同的行为,例如:

使用普通的三元运算符:

var x = y ? 10 : null;

或者仅使用一个简单的“if”语句来输出:

if (debug) console.log("Value of x:", x);


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接