对速记语法感到困惑: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
}
相关文章:
- 铬:“;未捕获的语法错误:意外的标记:"
- jQuery语法添加了var
- Javascript未捕获语法错误意外的标识符错误
- 为什么忽略了eval()代码中的语法错误
- 难以访问的JS环境中的语法错误
- 如何告诉MathJax对下标使用替代语法
- Javascript语法向设置发出sessionStorage值
- 未捕获的语法错误:意外的标记{
- 使用$scope方法时的ControllerAs语法
- "未捕获的语法错误:意外的标记}"
- javascript自执行函数-不同的语法
- 函数的Javascript语法
- WinJS内联绑定语法
- 使用JS函数来使用另一个函数的语法?node.js
- 未捕获的语法错误:无法在“文档”上执行“查询选择器”
- 有没有针对带有表的JavaScript的Markdown语法解析器
- 在递归生成器函数中,yield后面的*(星号/星号)语法意味着什么
- React JS:未捕获(在承诺中)语法错误:在位置 0 的 JSON 中意外<令牌
- 当使用控制器作为语法时,如何从父指令继承属性
- 如何将样式分配给php语法