3

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

var e = e ? e : event;

所以,这里没有错。但我主要将三元用于工具。可以这样安全地重写吗

var e = e || event;

不使用这个有什么隐藏的原因吗?

4

2 回答 2

5

在您的示例e中,如果它不是一个虚假值,则将使用它,例如false, 0, "", null, undefined. 否则event将被使用。在你的情况下,这应该被保存。

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

result = value > 10 && getA() || getB()

如果守卫 value > 10评估为trueANDgetA()返回一个值,getB()则将返回。这与 if-then-else 行为不同,后者返回getA().

于 2012-12-10T14:17:18.933 回答
-1

必须小心第二个选项,你基本上期望如果'e'不是假的,它会将它分配给你本地的'e',否则,你将使用'event',但是如果,例如, 'e' 是“0”,你希望你的本地 'e' 有什么?“0”还是“事件”?因为在您的情况下,您的本地“e”无论如何都会以“事件”结尾。

于 2012-12-10T14:05:41.013 回答