逻辑或三元逻辑

sha*_*gon 3 javascript ternary-operator logical-operators

我有一个旧脚本。这是其中的一部分:

var e = e ? e : event;
Run Code Online (Sandbox Code Playgroud)

因此,这里没有错。但是我主要使用三元来表示。可以这样安全地重写吗

var e = e || event;
Run Code Online (Sandbox Code Playgroud)

有没有隐藏原因不使用这个?

Juv*_*uve 5

在您的示例中,e如果它不是伪造的值,则将使用false, 0, "", null, undefined。否则event将被使用。就您而言,应该保存。

但是,使用更复杂的逻辑表达式代替if-then-else(或三元)会存在一些危险。这是一个例子:

result = value > 10 && getA() || getB()
Run Code Online (Sandbox Code Playgroud)

如果后卫 value > 10评估为trueAND并getA()返回值,getB()则将返回。这与if-then-else行为不同,后者会返回的虚假结果getA()