我见过的最奇怪的JS三元语句

  • 本文关键字:三元 语句 JS javascript
  • 更新时间 :
  • 英文 :


所以我正在做这个项目,这个项目有别人写的代码,我找到了这个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;
}

在这里可以更清楚地看到,在第二个例子中,如果statementfalse,则变量将始终等于option2
但在第一个示例中,在某些情况下,它仍然可以等于option1

最新更新