我以前从未见过的比较运算符
Comparison operators that I haven't seen before
我正在尝试破译以下JavaScript代码行:
delay_start = (typeof delay_start_qs !== "undefined") ? !(delay_start_qs === "false") : true;
具体来说,?
之后是!
。这是比较运算符吗?
它是一个简单的三元运算符。
delay_start = (typeof delay_start_qs !== "undefined")
? !(delay_start_qs === "false") : true;
让我们打破它..
(typeof delay_start_qs !== "undefined")
//如果未定义delay_start_qs
如果上述条件为真,则delay_start = !(delay_start_qs === "false") ;
否则delay_start = true;
同样可以写成 for 循环
if(typeof delay_start_qs !== "undefined") {
delay_start = !(delay_start_qs === "false") ;
} else {
delay_start = true;
}
它是三元运算符。
value = condition ? <if condition is true statement> : <else statement>
x ? y : z
阅读以上内容:
if(x) {
y;
} else {
z;
}
或:
if x then y else z
!
表示not
。 它与?
无关。 所以你看到的更像是这样的:
if x then (not y) else z
delay_start = (typeof delay_start_qs !== "undefined") ? !(delay_start_qs === "false") : true;
与
delay_start = (typeof delay_start_qs !== "undefined") ? delay_start_qs !== "false" : true;
因为当 x 和 y 都不是 NaN 时!(x === y)
等价于x !== y
。 整体与
delay_start = (typeof delay_start_qs === "undefined") ? true : delay_start_qs !== "false";
因为x ? y : z
和!x ? z : y
一样。 整体与
delay_start = (typeof delay_start_qs === "undefined") || delay_start_qs !== "false";
因为x ? true : y
和x || y
一样typeof x === "boolean"
. 整体与
if (typeof delay_start_qs === "undefined" || delay_start_qs !== "false") {
delay_start = true;
} else {
delay_start = false;
}
因为a = x ? y : z;
是一个语句,它使用 x 来决定将 y 或 z 中的哪一个分配给 a。
相关文章:
- 字符串为零的JavaScript比较运算符
- JavaScript 比较运算符中的不一致
- 使用空数组时比较运算符 JavaScript 的奇怪行为
- 比较运算符 !== 与 0
- 比较运算符在 javascript 中的数组上比较什么
- 将 JavaScript 比较运算符与变量一起使用
- 有没有办法使比较运算符成为变量
- JavaScript 比较运算符不起作用
- JavaScript 比较运算符未正确评估用户输入
- 我以前从未见过的比较运算符
- 链接数学比较运算符时javascript的奇怪行为
- 在条件中使用逻辑运算符和比较运算符(javascript)
- 使用“”对字符串进行排序;小于/大于“;比较器中的比较运算符
- 比较运算符-大于或等于-不工作
- Javascript 比较运算符 != vs !==.
- jQuery/Javascript的比较运算符"==="和“= =”
- JavaScript布尔表达式中的多个比较运算符
- Javascript:使用逻辑运算符和比较运算符
- js中的比较运算符.erb文件
- Javascript比较运算符顺序