用+代替||不好吗?

Ell*_*lle 0 javascript

刚刚注意到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

为什么+ +在这种情况下看不到更多用途?

以下是我想到的原因:

  1. 人们不认为使用它,因为他们在思考逻辑,而不是数学.

  2. +将始终评估表达的两面; ||不会评价右手操作数在所有如果左边的操作数是truthy.无所谓if (boolean || boolean); 对此非常重要if (func() || func()).

  3. ||有这种非常强大的行为,表达式的结果是第一个真实操作数的值,而不是 true或者false,这是非常有用的.+会导致数字或字符串,这将不太有用.

  4. ||将测试其真实性/虚假性的论点; +将它们转换为数字或字符串,具体取决于它在任何一方看到的内容.所以,有很多情况下的||,并+会出现不同的结果.

  5. 使用+将需要你很快就能够加速对+各种类型的处理,使代码不那么清晰,难以维护.

  6. 这只是一个错误的操作员(好吧,所以这个人非常主观:-)).||有逻辑比较,为什么不使用它?

  • 我真的很喜欢这个答案.谢谢你对这个问题有所了解. (2认同)