如果我有这个等式:
var x = (true && false || true)
Run Code Online (Sandbox Code Playgroud)
这相当于:
var x = ((true && false) || true)
Run Code Online (Sandbox Code Playgroud)
要么:
var x = (true && (false || true))
Run Code Online (Sandbox Code Playgroud)
这背后的逻辑是什么?
AND胜过OR.
所以它会
var x = ((true && false) || true)
Run Code Online (Sandbox Code Playgroud)
请参阅运算符优先级和关联性.
在布尔逻辑中,!在"和"(&&)之前评估"not"(),在"或"(||)之前评估"and" .通过使用double(&&)和double(||),这些运算符将短路,这不会影响逻辑结果,但如果需要,它会导致右侧的术语无法进行评估.
从而
var x = (true && false || true)评估false|| true评估结果true
和
var x = ((true && false) || true)评估false || true评估结果true
和
var x = (true && (false || true))评估true && true评估结果true