刚刚注意到JS中自动类型转换的一个特殊副作用:
if (false || false) {
}
Run Code Online (Sandbox Code Playgroud)
是相同的:
if (false + false) {
}
Run Code Online (Sandbox Code Playgroud)
而且两者(false || true)
并(false + true)
会返回相同的结果(真).
为什么+
在这种情况下看不到更多用途?是否有一个可靠的原因(除了可能令人困惑的代码)我们不应该用+
它代替||
?
我想可能会因额外的演员而受到性能影响,但是嘿 - 我们正在拯救一个角色!是的,一个微优化取代另一个!
T.J*_*der 13
为什么+ +在这种情况下看不到更多用途?
以下是我想到的原因:
人们不认为使用它,因为他们在思考逻辑,而不是数学.
+
将始终评估表达的两面; ||
不会评价右手操作数在所有如果左边的操作数是truthy.无所谓if (boolean || boolean)
; 对此非常重要if (func() || func())
.
||
有这种非常强大的行为,表达式的结果是第一个真实操作数的值,而不是 true
或者false
,这是非常有用的.+
会导致数字或字符串,这将不太有用.
||
将测试其真实性/虚假性的论点; +
将它们转换为数字或字符串,具体取决于它在任何一方看到的内容.所以,有很多情况下的||
,并+
会出现不同的结果.
使用+
将需要你很快就能够加速对+
各种类型的处理,使代码不那么清晰,难以维护.
这只是一个错误的操作员(好吧,所以这个人非常主观:-)).||
有逻辑比较,为什么不使用它?
归档时间: |
|
查看次数: |
115 次 |
最近记录: |