我正在尝试破译以下 JavaScript 代码行:
delay_start = (typeof delay_start_qs !== "undefined") ? !(delay_start_qs === "false") : true;
具体?
是!
. 那是比较运算符吗?
我正在尝试破译以下 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)
等效于x !== y
当 x 和 y 都不是 NaN 时。和整体是一样的
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";
因为与whenx ? 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 的语句。