Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/461.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 逻辑or代替三元_Javascript_Ternary Operator_Logical Operators - Fatal编程技术网

Javascript 逻辑or代替三元

Javascript 逻辑or代替三元,javascript,ternary-operator,logical-operators,Javascript,Ternary Operator,Logical Operators,我有一个传统的剧本。这是其中的一部分: var e = e ? e : event; 所以,这里没有问题。但我主要用三元来表示toogling。这样重写安全吗 var e = e || event; 不使用此选项有什么隐藏的原因吗?必须小心第二个选项,您基本上希望如果“e”不是false,它会将其分配给本地的“e”,否则,您将使用“event”,但如果,例如,“e”是“0”,您希望本地的“e”有什么?“0”或“事件”?因为在您的情况下,您的本地“e”无论如何都会以“event”结尾。在您的示

我有一个传统的剧本。这是其中的一部分:

var e = e ? e : event;
所以,这里没有问题。但我主要用三元来表示toogling。这样重写安全吗

var e = e || event;

不使用此选项有什么隐藏的原因吗?

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

在您的示例中,如果它不是虚假值,例如
false、0、“、null、未定义,则将使用
e
。否则将使用
事件
。在您的情况下,这应该是保存

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

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

如果防护
value>10
的计算结果为
true
并且
getA()
返回错误值,则将返回
getB()
。这与if-then-else行为不同,if-then-else行为会返回错误的
getA()

结果。我发现第一个更可读。我发现第二个更可读,上个月就发生了这样的争论(我会努力找到,但这很难)。也不要忘记最简单的
如果(!e)e=event
@Cthulhu这两个表达式都非常简单,因此可读性在这里不是问题。您似乎不习惯使用
|
操作符。它经常用于这些类型的检查。不过,我还是放弃参数。
e
是当前函数的参数吗?如果是,则不需要通过
var
@Kos
If(!e)e=event声明具有相同名称的变量是一条路要走。与OP的示例不同,这里的赋值仅在必要时进行。OP的代码意味着
e
应该包含对事件对象的引用。因此,它要么是一个对象值,要么是
null
/
undefined
,因此可以执行类似
e | | event
之类的检查。顺便说一句,不是false,而是false、undefined、null、空字符串、zero或NaN。在第一种情况下也会发生同样的情况。