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

就像这样:

var a = 2;
var b = 3;

if(a < b) {
    // do something
}

当前回答

Inline if在JavaScript中很简单,不需要大括号:

if (a < b) doSomething()

从技术上讲,你可以在同一行中有一个else,但它需要一个分号:

if (a < b) doSomething(); else doSomethingElse()

您的团队的编码标准可能不需要上面的示例。最重要的是你要遵循适合你的团队的惯例。就我个人而言,在许多情况下,我更喜欢if语句而不是三元语句,因为我发现它们更容易阅读。

其他回答

你不一定需要jQuery。JavaScript本身就可以做到这一点。

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

如果值为真,则c变量为次要值,如果值为假,则为主要值。


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

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

我经常需要在每个条件下运行更多的代码,通过使用:(,,)多个代码元素可以执行:

var a = 2;
var b = 3;
var c = 0;

( a < b ?  ( alert('hi'), a=3, b=2, c=a*b ) : ( alert('by'), a=4, b=10, c=a/b ) );

你可以使用三元运算符,它等同于一个简单的if, else。

三元操作,调用两个结果的函数:

(a < b) ? DoSomething() : DoSomethingElse();

三元运算,只对其中一个结果调用函数:

(a < b) ? DoSomething() : {}; or (a < b)?.DoSomething();

除此之外,你还可以使用内联if条件和&&和||操作符。 像这样

var a = 2;
var b = 0;

var c = (a > b || b == 0)? "do something" : "do something else";

也可以只使用逻辑运算符来近似if/else。

(a && b) || c

这句话大致相当于说:

a ? b : c

当然,大致和:

if ( a ) { b } else { c }

我说粗略是因为这种方法有一个不同之处,你必须知道b的值将被计算为真,否则你总是会得到c。基本上你必须意识到if () {here}将出现的部分现在是你放置if (here){}的条件的一部分。

上述情况是可能的,因为JavaScripts的行为是传递/返回一个形成逻辑表达式的原始值,这取决于操作符的类型。某些其他语言,如PHP,执行操作的实际结果,即true或false,这意味着结果总是true或false;例句:

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 }

你可能会问为什么只使用逻辑运算符而不是三元运算符,对于简单的情况,你可能不会这样做,除非你想确保a和b都为真。您还可以使用逻辑操作符实现更精简的复杂条件,使用嵌套的三元操作可能会变得相当混乱……如果你想让你的代码易于阅读,这两种方法都不是那么直观。