我需要在我的代码中实现短路评估逻辑。我读了一些文章http://en.wikipedia.org/wiki/Short-circuit_evaluation,http://www.grauw.nl/blog/entry/510来了解它。但他们还没有详细介绍,我尝试了一些例子。
例如:
function a() {return true;}
function b() {return false;}
function c() {return true;}
表达
案例1)a() && b() && c();
案例2)a() || b() && c();
案例3)a() && c() || b();
案例1:
c()
将不会被执行。
案例2:
b()
和c()
将不会被执行
案例3:
b()
将不会被执行。
我们应该在哪里了解这种短路评估?
答案 0 :(得分:2)
我们应该在哪里了解这种短路评估?
The specification和MDN一样方便。
但简短版本是:
始终评估&&
或||
的左侧操作数,为我们提供左侧值。
使用&&
,如果左侧值为false,则不评估右侧操作数;表达式的值是左手值。
使用||
,如果左侧值是真实的,则不评估右侧操作数;表达式的值是左手值。
否则,将评估右侧操作数,表达式的结果为其值。
" Falsey"值是在用作布尔值时强制为false
的任何值。这些是0
,""
,NaN
,undefined
,null
,当然还有false
。
" Truthy"值是任何不是假的值。
更多关于我的博客:JavaScript's Curiously-Powerful OR Operator (||
)。 (我一直有意做&&
版本的那个......)