我有一个遗留脚本。这是它的一部分:
var e = e ? e : event;
所以,这里没有错。但我使用三元主要用于toogling。可以像这样安全地重写
var e = e || event;
有没有隐藏的理由不使用这个?
答案 0 :(得分:3)
在您的示例e
中,如果它不是 falsy 值,则会被使用,例如false, 0, "", null, undefined
。否则将使用event
。在你的情况下,这应该是保存。
但是使用更复杂的逻辑表达式而不是if-then-else(或三元)存在一些危险。这是一个例子:
result = value > 10 && getA() || getB()
如果后卫 value > 10
评估为true
并且getA()
返回 falsy 值,则getB()
将被退回这与if-then-else行为不同,后者将返回getA()
的 falsy 结果。
答案 1 :(得分:0)
要小心第二个选项,你基本上期望如果'e'不是假的,它会将它分配给你的本地'e',否则,你将使用'event',但是如果例如,“e”为“0”,您希望当地的“e”拥有什么? “0”或“事件”?因为在您的情况下,您的本地“e”最终会以“事件”结束。