我有一个遗留脚本。这是其中的一部分:
var e = e ? e : event;
所以,这里没有错。但我主要将三元用于工具。可以这样安全地重写吗
var e = e || event;
不使用这个有什么隐藏的原因吗?
我有一个遗留脚本。这是其中的一部分:
var e = e ? e : event;
所以,这里没有错。但我主要将三元用于工具。可以这样安全地重写吗
var e = e || event;
不使用这个有什么隐藏的原因吗?
在您的示例e
中,如果它不是一个虚假值,则将使用它,例如false, 0, "", null, undefined
. 否则event
将被使用。在你的情况下,这应该被保存。
但是使用更复杂的逻辑表达式而不是 if-then-else(或三元)存在一些危险。这是一个例子:
result = value > 10 && getA() || getB()
如果守卫 value > 10
评估为true
ANDgetA()
返回一个假值,getB()
则将返回。这与 if-then-else 行为不同,后者会返回getA()
.
必须小心第二个选项,你基本上期望如果'e'不是假的,它会将它分配给你本地的'e',否则,你将使用'event',但是如果,例如, 'e' 是“0”,你希望你的本地 'e' 有什么?“0”还是“事件”?因为在您的情况下,您的本地“e”无论如何都会以“事件”结尾。