我正在尝试破译以下JavaScript代码行:
delay_start = (typeof delay_start_qs !== "undefined") ? !(delay_start_qs === "false") : true;
具体而言,?
后跟!
。那是比较运算符吗?
答案 0 :(得分:2)
它是一个简单的三元运算符。
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;
}
答案 1 :(得分:2)
这是三元运营商。
value = condition ? <if condition is true statement> : <else statement>
答案 2 :(得分:2)
x ? y : z
阅读以上内容:
if(x) {
y;
} else {
z;
}
或:
if x then y else z
!
表示not
。它与?
无关。所以你看的更像是这样:
if x then (not y) else z
答案 3 :(得分:0)
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来决定分配给a或z中的哪一个。