JavaScript三元条件运算符

3
我希望使用JavaScript三元运算符来实现以下逻辑。这可行吗?
if(condition1){
    console.log("condition1 pass");
} else if(condition2){
    console.log("condition2 pass");
} else{
    console.log("It is different");
}

函数三元运算符(a, b) { (a > b) ? console.log("a比b大") : (a < b) ? console.log("a比b小") : console.log("a等于b"); } - Leron
10
可以的。可能吗?是的。好主意吗?不,也许不是。 - T.J. Crowder
4个回答

4
当然,你只需要在另一个三元表达式内嵌套一个即可:
else if条件放置在:部分的内部。
console.log(
    condition1
        ? "condition1 pass"
        : condition2
            ? "condition2 pass"
            : "it is different"
);

最好不要这样做,因为语法容易出错且臃肿。如果已经在函数内部,则可以将其移动到一个函数或IIFE中,并直接返回结果以减少循环次数:
function testCondition(condition1, condition2){
    if(condition1){
        return "condition1 pass";
    } else if(condition2){
        return "condition2 pass";
    }
    return "It is different";
}

var conditionalPass = (function(condition1, condition2){
    if(condition1){
        return "condition1 pass";
    } else if(condition2){
        return "condition2 pass";
    }
    return "It is different";
})(condition1, condition2);

不确定为什么精简语法不好,以及它可能被误解为什么。缩进和运算符的突出位置使得代码非常易于阅读和理解。 - Bergi
虽然我是三元运算符的粉丝,但我个人见过有人意外删除了 ? 或 : 字符,不知道它们的作用。 - Quill

2
是的,确实是这样。使用以下逻辑:
var output = ((condition1) ? 'condition1 pass' : ((condition2) ? 'condition2 pass' : 'It is different'));

console.log(output)

2

这是可行的,但不建议这样做:

console.log(condition1? "condition1 pass": (condition2? "condition2 pass": "It is different"));

正如您所看到的,这段代码非常难以阅读。


1

这是可能的,但建议这样做。

console.log(
    condition1?//if
        "condition1 pass":
    condition2?//else if
        "condition2 pass"://else
        "It is different"
)

如您所见,这很容易阅读。

是否缺少“不”字,最后一句话是不是应该用讽刺的语气? - Bergi
@Bergi 不是的。这只是事实。 但是如果那个人在一行中使用三元运算符,那么很难理解它。 - user5066707
嗯,“可能但建议”听起来很奇怪。实际上,我发现在行末放置运算符(与@Quills答案中的缩进相反)非常难读,特别是如果它前面甚至没有空格。 - Bergi
@Bergi,我的习惯是不要添加额外的空格 *-_-*。为什么每个人都不喜欢我做的事情呢? - user5066707

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