这个语法是什么意思?

时间:2011-08-15 18:14:09

标签: javascript

  

可能重复:
  Question mark in JavaScript

我已经看过几次,但我从来不知道这是什么意思。它的名称是什么以及它是如何工作的?

以下是我看到的例子:

input.checked = input.type == "radio" ? true : false;

4 个答案:

答案 0 :(得分:6)

该示例中有一个额外的=,我认为你的意思是:

input.checked = input.type == "radio" ? true : false;

(现已修复。)

如果true,则会将input.checked分配给input.type == "radio",如果不false,则分配给expression ? trueResult : falseResult

true

...被称为条件运算符(或者有时候,“三元”运算符 - 从技术上讲,它只是一个三元运算符,例如,一个运算符需要三个操作数)。更多信息在Section 11.12中。

在这种情况下,使用条件运算符绝对没有意义,因为等价表达式的结果无论如何都是falseinput.checked = input.type == "radio"; ,所以它可以写成:

1

...但是有很多地方条件运算符很有用。例如,假设您想将2x分配给y,具体取决于x = y == 42 ? 1 : 2; 是否为42:

?

您可以将:视为问一个是或否的问题,然后是“是”答案,以及{{1}}之后的“否”答案。

答案 1 :(得分:3)

也许这样容易理解:

input.checked = (input.type == "radio")? true : false;

它基本上是 if else 。如果表达式为真,则 input.checked 将设置为第一个值,否则为第二个值。

<强> [编辑]

注意,在JavaScript中,在评估字符串以检查类型相等时,应始终使用'==='而不是'=='。

答案 2 :(得分:0)

这是一个三元表达。这是一个简写:

if (input.type == "radio") {
    input.checked = true;
} else {
    input.checked = false;
}

然而,在这个特定的例子中存在冗余。它可以简单地写成:

input.checked = input.type == "radio";

答案 3 :(得分:0)

也许第一个===

它看起来像ternary operator.(其他短 - 如果结构)