这段代码有啥作用? a = (a == b) ?丙:乙; [复制]

Posted

技术标签:

【中文标题】这段代码有啥作用? a = (a == b) ?丙:乙; [复制]【英文标题】:What does this piece of code do? a = (a == b) ? c: b; [duplicate]这段代码有什么作用? a = (a == b) ?丙:乙; [复制] 【发布时间】:2013-06-25 06:38:39 【问题描述】:
a = (a == b) ? c: b;

我不明白。所有的a, b, c都是程序员设置的具有一定值的变量。

【问题讨论】:

如果 a 等于 b 则将 c 分配给 a 否则 b. 在其他语言中也有相同的运算符,但要记住 javascript 的一件事,即三元运算符的条件部分(本例中的 (a == b))是“真实的”,而不仅仅是简单的布尔值。所以99 ? "a" : "b" 将返回“a”,0 ? "a" : "b" 将返回“b”。这可以让您在 javascript 中使用此运算符做一些很酷的事情(就像使用 || 运算符一样)。 如果 a 等于 be 则 a 等于 c ,否则 a 等于 b 。 【参考方案1】:

那叫ternary operator: 和做的一样:

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

【讨论】:

【参考方案2】:

如果a 等于ba = c 否则a = b

【讨论】:

【参考方案3】:

这是 if 和 assignment 的简写形式。

q = x ? y : z

q 是您分配给的变量 x 是一个布尔表达式,为真或假。 如果是真的 y 将被分配给你的变量 q 否则 z 将分配给 q。

【讨论】:

【参考方案4】:

这是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 的绝佳参考。

【讨论】:

【参考方案5】:

如果 a 等于 b 则将 c 分配给 a ,否则将 b 分配给 a

【讨论】:

【参考方案6】:

英文-

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

【讨论】:

【参考方案7】:

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

【讨论】:

以上是关于这段代码有啥作用? a = (a == b) ?丙:乙; [复制]的主要内容,如果未能解决你的问题,请参考以下文章

Youtube 嵌入视频在 webview 中不起作用。这段代码有啥问题?

a = a + b 和 a += b 有啥区别? [复制]

object* foo(bar) 有啥作用?

等号后面的波浪号有啥作用? [复制]

维生素A/B/C/D/E都各有啥作用?

维生素A.B.C.D.E分别有啥作用?