Javascript 被速记语法弄糊涂了:x>;0 ? 1 : -1;
下面的Javascript语法是什么意思?请描述整个语法: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(
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