对速记语法感到困惑:x > 0 ?1 : -1;.

Confused by shorthand syntax: x > 0 ? 1 : -1;

本文关键字:语法      更新时间:2023-09-26

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

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

这本身没有任何意义。您将提醒x的值,即 0,仅此而已。第二个语句毫无意义,除非你把它分配给某事。但是,如果您这样做:

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

你会得到-1。

条件运算符是 IF 语句的简写,它基本上是说:

断言如果x > 0.如果是这样,则分配 1。如果不是,则分配 -1。

或者以更一般的形式:

CONDITION ? VALUE_IF_TRUE : VALUE_IF_FALSE;

哪里:

  • CONDITION - 可以是计算结果为布尔值的任何内容(即使在类型杂耍之后)。
  • VALUE_IF_TRUE - 在断言CONDITION时返回的值 TRUE
  • VALUE_IF_FALSE - 在断言CONDITION时返回的值 FALSE

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

什么意思?表达式

a?b:c

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

这是一个

三元运算符(?

把它想象成一个 IF 语句。

"?"前面的语句是 if 语句的条件。紧跟在":"之前的内容是如果语句为真,则将执行/分配的内容。在":"之后是语句为假时将执行/分配的内容。

但是,您的代码只会提醒 0,因为您没有从三元运算符分配任何内容。

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

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

它将

是 -1。这称为三元运算符。

基本上它扩展到这个(假设你打算把x=放在第二行的开头)。

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