我有一个遗留脚本。以下是其中的一部分:
var e = e ? e : event;
所以,这里没有任何问题。但我主要使用三目运算符进行切换操作。它可以安全地重写为以下形式
var e = e || event;
有没有任何隐藏原因不使用这个?
我有一个遗留脚本。以下是其中的一部分:
var e = e ? e : event;
所以,这里没有任何问题。但我主要使用三目运算符进行切换操作。它可以安全地重写为以下形式
var e = e || event;
e
不是falsy值,例如false,0,"",null,undefined
,将使用e
。否则将使用event
。在您的情况下,这应该是安全的。result = value > 10 && getA() || getB()
value > 10
的结果为true
,并且getA()
返回一个falsy值,则将返回getB()
。这与if-then-else的行为不同,后者将返回getA()
的falsy结果。第二个选项要小心,如果'e'不是false,它会将其分配给本地'e',否则,您将使用'event',但是,例如,如果'e'是"0",您希望本地'e'有什么? "0"还是'event'?因为在您的情况下,您的本地'e'最终仍将以'event'结束。
e
应该持有对事件对象的引用。因此,它要么是一个对象值,要么是null
/undefined
,所以适当进行像e || event
这样的检查。 - Šime Vidas
if (!e) e = event;
。 - Kos||
运算符。这种类型的检查通常会经常使用它。不过我建议放弃使用括号。 - Šime Vidasif (!e) e = event;
是正确的做法。与 OP 的示例不同,这里仅在必要时才进行赋值操作。 - Šime Vidas