刚刚注意到JS中自动类型转换的特殊副作用:
if (false || false) {
}
是相同的:
if (false + false) {
}
并且
(false || true)
和(false + true)
将返回相同的结果(true)。为什么
+
在这种情况下看不到更多使用?是否有确凿的理由(除了可能造成混淆的代码),我们不应该使用+
代替||
?我想可能会因为投放过多内容而导致性能下降,但嘿-我们正在保存角色!是的,一个微优化代替了另一个!
最佳答案
为什么+在这种情况下看不到更多用处?
这是我想到的原因:
人们不考虑使用它,因为他们在考虑逻辑,而不是数学。+
将始终对表达式的两边求值;如果左操作数为真,则||
根本不会评估右操作数。对if (boolean || boolean)
无关紧要;对于if (func() || func())
可能很重要。||
的wonderfully powerful behavior表示表达式的结果是第一个真实操作数的值,而不是true
或false
,这是非常有用的。 +
将导致数字或字符串,这将不太有用。||
将测试其论证是否属实/虚假; +
可以将它们转换为数字或字符串,具体取决于在两侧看到的内容。因此,在许多情况下,||
和+
会给您不同的结果。
使用+
要求您非常精明地了解+
在任一侧对各种类型的处理方式,从而使代码不那么清晰且难以维护。
这只是错误的运算符(好吧,所以这很主观:-))。 ||
可以进行逻辑比较,为什么不使用它呢?
关于javascript - 用+代替||是否不好?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/26410350/