所以我正在做这个项目,这个项目有别人写的代码,我找到了这个javascript三元运算来分配一个变量。他们不能让我问这个问题。我理解上半场,但是。。。
variable = statement ? option1 : option2 ? option2 : option1
如果只是,对我来说会很简单
variable = statement ? option1 : option2
但后半部分的陈述让我感到困惑。有人能解释一下这里发生了什么吗?
variable = statement ? option1 : option2 ? option2 : option1
是,间隔开:
variable = statement
? option1
: option2
? option2
: option1
If语句,选项1。
否则,如果为option2,则为option2。
否则,选项1。
另一种方法是:
if (statement) {
variable = option1;
} else if (option2) {
variable = option2;
} else {
variable = option1;
}
实现相同逻辑的更清晰的方法是:
if (!statement && option2) {
variable = option2;
} else {
variable = option1;
}
或
variable = (!statement && option2)
? option2
: option1;
不一样variable = statement ? option1 : option2 ? option2 : option1
相当于-
if (statement) {
variable = option1;
} else {
if (option2) {
variable = option2;
} else {
variable = option1;
}
}
其中,variable = statement ? option1 : option2
等效于-
if (statement) {
variable = option1;
} else {
variable = option2;
}
在这里可以更清楚地看到,在第二个例子中,如果statement
是false
,则变量将始终等于option2
但在第一个示例中,在某些情况下,它仍然可以等于option1
。