比较运算符,我以前没见过

时间:2013-09-12 22:59:32

标签: javascript

我正在尝试破译以下JavaScript代码行:

delay_start = (typeof delay_start_qs !== "undefined") ? !(delay_start_qs === "false") : true;

具体而言,?后跟!。那是比较运算符吗?

4 个答案:

答案 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 : yx || ytypeof 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中的哪一个。