Javascript 被速记语法弄糊涂了:x>;0 ? 1 : -1;

Javascript 被速记语法弄糊涂了:x>;0 ? 1 : -1;,javascript,syntax,conditional-operator,Javascript,Syntax,Conditional Operator,下面的Javascript语法是什么意思?请描述整个语法: var x = 0; x > 0 ? 1 : -1; // confused about this line alert(x); 将是-1。这就是我们所知道的 基本上,它扩展到这一点(假设您打算将x=放在第二行的开头) 这本身毫无意义。您将警告x的值,该值为0,仅此而已。第二个语句是没有意义的,除非你把它赋给某个东西。但是,如果您愿意这样做: var x=0; var y = x > 0 ? 1 : -1; alert(

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

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

将是-1。这就是我们所知道的

基本上,它扩展到这一点(假设您打算将
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;
其中:

  • 条件
    -可以是任何计算结果为布尔值的东西(即使在类型转换之后)
  • 值\u如果为真
    -在将
    条件
    断言为
    的情况下返回的值
  • VALUE\u IF\u FALSE
    -当
    条件
    被断言为
    FALSE
    时返回的值

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

      把它想象成一个IF语句

      “?”前面的语句是if语句的条件。紧跟在“:”之前的是如果该语句为true将执行/分配的内容。如果语句为false,则在“:”之后将执行/分配什么

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

      基本上,您的代码可以这样说。
      x=0;
      警报(x);
      //这将向0发出警报

      您需要将此修改为:
      x=0;
      变量y=x>0?1 : -1;
      
      警报(y)

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

      这是什么意思?表情

      a?b:c
      

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

      这是[三元运算符][1](链接解释)[1]:它什么也不做…@DhaivatPandya官方名称是条件运算符。三元运算符只是一个有三个操作数的运算符。+1可通过下伏特而不是复制来偏移古怪的驱动;另一个问题是关于此运算符与复合赋值语法的交互。问题中的代码没有扩展到该语法。该语句中没有赋值。若要对此进行扩展,请使用
      y=
      行测试
      x>0
      。如果这是真的,
      y
      被分配
      1
      ,如果它是假的,那么
      y
      被分配
      -1
      。这是非常正确的helpful@osami如果我的回答解决了你的问题,请考虑接受。这可以通过点击这个答案计票下面的绿色大勾来完成。@DavidHeffernan:我该上床睡觉了。我可能不会这么说,但因为他似乎是js的新手,而且在这一点上复制粘贴的趋势很大,所以,我指出应该是
      var y
      ,以避免创建一个全局
      a?b:c