如何在 JavaScript 中编写内联 IF 语句?

IT技术 javascript if-statement ternary-operator conditional-operator
2021-01-18 12:29:30

如何if在 JavaScript 中使用内联语句?也有内联else语句吗?

像这样的东西:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}
6个回答

您不一定需要 jQuery。仅 JavaScript 就可以做到这一点。

var a = 2;
var b = 3;    
var c = ((a < b) ? 'minor' : 'major');

c变量将是minor如果该值true,并且major如果该值是false


这称为条件(三元)运算符。

https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Operators/Conditional_Operator

它说明了如何使用内联 IF,它准确地回答了问题。
2021-03-19 12:29:30
@getName 不是真的,但如果你愿意,你可以使用一行 if 语句 if (a < b) c = 'major';
2021-03-20 12:29:30
@MattW 这没有展示如何使用内联 IF,它展示了如何使用 IF ELSE
2021-03-25 12:29:30
请注意,在这种情况下,所有括号都是可选的。通常是个人偏好/编码风格决定何时使用它们。
2021-03-29 12:29:30
@khany,这是一个 JavaScript 问题。表达式在其他语言中的计算方式可能不同。
2021-03-30 12:29:30

有一个三元运算符,如下所示:

var c = (a < b) ? "a is less than b"  : "a is not less than b";
它们甚至不必是函数调用......0 < 1 : 5 : 120;是一个完全有效的声明。不过,除非您按行付费,否则有点无用。
2021-03-16 12:29:30
它实际上不必分配给任何东西。右侧元素可以简单地是函数调用。
2021-03-24 12:29:30
不过,@jfriend00 我几乎在所有情况下都建议不要这样做。如果你没有使用表达式的值,那么你真正想要的是副作用;和副作用是陈述的好处。if在这种情况下使用普通的老式无聊语句可能会使您的代码更易于阅读和理解,并且不太可能因以后的更改而中断。
2021-03-28 12:29:30

if内联语句,里面的代码应该只有一个语句:

if ( a < b ) // code to be executed without curly braces;

您还可以仅使用逻辑运算符来近似 if/else。

(a && b) || c

上面的内容大致等同于:

a ? b : c

当然,大致相同:

if ( a ) { b } else { c }

我说粗略是因为这种方法有一个区别,即您必须知道 的值b将评估为真,否则您将始终得到c基本上,您必须意识到将出现的部分if () { here }现在是您放置的条件的一部分if ( here ) { }

由于 JavaScript 的传递/返回形成逻辑表达式的原始值之一的行为,上述情况是可能的,这取决于运算符的类型。某些其他语言,如PHP,进行运算的实际结果,即真或假,即结果总是真或假;例如:

14 && 0          /// results as 0,  not false
14 || 0          /// results as 14, not true
1 && 2 && 3 && 4 /// results as 4,  not true
true && ''       /// results as ''
{} || '0'        /// results as {}

与普通的 if 语句相比,一个主要的好处是前两种方法可以在参数的右侧进行操作,即作为赋值的一部分。

d = (a && b) || c;
d = a ? b : c;

if `a == true` then `d = b` else `d = c`

使用标准 if 语句实现此目的的唯一方法是复制分配:

if ( a ) { d = b } else { d = c }

你可能会问,为什么只使用逻辑运算符,而不是三元运算符,对于简单的情况下,你可能不会,除非你想确保ab都是真实的。您还可以使用逻辑运算符实现更简化的复杂条件,使用嵌套的三元运算可能会变得非常混乱……如果您希望代码易于阅读,那么两者都不是那么直观。

用简单的英语,语法解释:

if(condition){
    do_something_if_condition_is_met;
}
else{
    do_something_else_if_condition_is_not_met;
}

可以写成:

condition ? do_something_if_condition_is_met : do_something_else_if_condition_is_not_met;
@ScottBeeson 当然。这也取决于您对条件的使用。true false并且""应该可以忽略 else 部分。
2021-03-20 12:29:30
如果没有“else”语句,是否可以做到这一点?IEcondition ? true
2021-03-21 12:29:30
是的,但 else 部分不能完全省略。至少: false: ""应该在那里,因为 javascript 正在期待这一点。
2021-03-25 12:29:30
哦。所以这是能够做到这一点,而不用else语句。
2021-04-01 12:29:30
那么2 == 2 ? doSomething()会是一样的if (2 == 2) doSomething()吗?
2021-04-05 12:29:30