【发布时间】:2017-08-11 14:42:23
【问题描述】:
我试图了解这段代码是如何工作的。我知道三元运算符是condition ? option1 : option2,但我不知道在这种情况下它是如何工作的。
constructor(minSupport: number, minConfidence: number, debugMode: boolean) {
this.minSupport = minSupport ? minSupport === 0 ? 0 : minSupport : 0.15;
this.minConfidence = minConfidence ? minConfidence === 0 ? 0 : minConfidence : 0.6;
this.debugMode = debugMode || false;
}
【问题讨论】:
-
这是谁写的??双重检查 falsy 没有意义。
-
它是嵌套的三元组,它会真正受益于一些括号(至少)
-
minSupport === 0 ? 0 : minSupport没有意义(除了关心-0,但这应该在评论中注明) -
@zzzzBov 0 是假的,因此它将在第一个三元组退出,并且不会进入检查 0 的嵌套一个?
-
@DarrenYoung 可以,但不应该。我已经多次看到(并犯过)这种错误。在我看来,在覆盖隐式默认值(例如
undefined)的同时保留显式0的意图。
标签: javascript ternary-operator