由速记语法困惑:x> 0? 1:-1;

时间:2012-05-12 20:04:20

标签: javascript syntax conditional-operator

以下Javascript语法是什么意思?请描述整个语法:

var x = 0;
x > 0 ? 1 : -1;  // confused about this line
alert(x);

4 个答案:

答案 0 :(得分:20)

这本身就没有任何意义。您将提醒x的值,即0,就是这样。除非你把它分配给某个东西,否则第二个陈述毫无意义。但是,如果你这样做了:

var x=0;
var y = x > 0 ? 1 : -1;
alert(y);

你会得到-1。

The Conditional Operator ,是IF语句的简写,它基本上说:

  

断言x > 0。如果是,则指定1.如果不是,则指定-1。

或者更一般的形式:

CONDITION ? VALUE_IF_TRUE : VALUE_IF_FALSE;

其中:

  • CONDITION - 可以是任何评估为布尔值的东西(即使在类型杂耍之后)。
  • VALUE_IF_TRUE - CONDITION声明为TRUE时要返回的值。
  • VALUE_IF_FALSE - CONDITION声明为FALSE时要返回的值。

答案 1 :(得分:2)

这是条件运算符。它是三元运算符,因为它有三个操作数。它通常被称为三元运算符,但该术语相当松散,因为任何具有三个操作数的运算符都是三元运算符。它恰好是唯一常用的三元运算符。

这是什么意思?表达式

a?b:c
如果b的计算结果为true,则

计算结果为a,否则表达式的计算结果为c

答案 2 :(得分:1)

这是一个三元运算符(?)

将其视为IF声明。

之前的声明'?'是你的if语句的条件。紧接在':'之前的内容是如果语句为真将执行/被分配的内容。如果语句为假,则':'将执行/被分配。

然而,您的代码只会提醒0,因为您没有从三元运营商那里分配任何东西。

基本上你的代码也可以说 x = 0; alert(x); // this would alert 0

您需要将其修改为:
x = 0; var y = x > 0 ? 1 : -1; alert(y);

答案 3 :(得分:0)

它将是-1。这称为ternary operator

基本上它扩展到了这一点(假设您打算将x=放在第二行的开头)。

if(x>0){
  x = 1
} else {
  x = -1
}