2013-06-27 44 views
0
a = (a == b) ? c: b; 

我不明白。所有这些{a,b,c}都是由程序员设置的具有一定价值的变量。这段代码是做什么的? a =(a == b)? c:b;

+0

如果** a **等于** b **,则将** c **分配给** a ** else ** b **。 –

+0

在其他语言中有相同的运算符,但有一点需要注意,javascript是三元运算符的条件部分(本例中为'(a == b)'),它是“truthy”,不仅仅是简单的布尔运算符。所以'99? “a”:“b”'会返回“a”,而'0? “a”:“b”将返回“b”。这可以让你用javascript中的这个运算符做一些很酷的事情(就像你可以用'||'运算符一样)。 –

+0

如果a等于则等于c,否则等于b。 – Pbk1303

回答

0

这是ternary operator,这相当于:

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

的主要区别在于,if/else包括条件语句,而三元运算符是一个条件表达式。换句话说,三元运算符就像if/else返回值一样工作。在其他一些语言,if/else是表达式为好,所以下面将是有效的,而事实上相当于?:

a = (if (a == b) { c; } else { b; }) // not valid javascript 

一定要检查https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Conditional_Operator

Mozilla的开发者网络是JavaScript的一个梦幻般的参考。

1

如果a等于b然后a = c否则a = b

0

如果a等于b然后分配ca,以其他方式转让ba

0

英语 -

If a is equal to b, then a = c. otherwise, a = b 
0

?:语法是一个ternary operator。本质上,它意味着如果a等于ba等于c否则a等于b

1

这是一个是否和一个赋值的简写形式。

q = x? y:z

q是您分配给 的变量x是布尔表达式,它将为true或false。 如果这是真的,y将被分配给您的变量q 否则z将被分配给q。

相关问题