短路评估在javascript中

时间:2015-05-01 09:53:59

标签: javascript optimization functional-programming expression conditional-statements

我需要在我的代码中实现短路评估逻辑。我读了一些文章http://en.wikipedia.org/wiki/Short-circuit_evaluationhttp://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()将不会被执行。

我们应该在哪里了解这种短路评估?

1 个答案:

答案 0 :(得分:2)

  

我们应该在哪里了解这种短路评估?

The specificationMDN一样方便。

但简短版本是:

  • 始终评估&&||的左侧操作数,为我们提供左侧值

  • 使用&&,如果左侧值为false,则不评估右侧操作数;表达式的值是左手值。

  • 使用||,如果左侧值是真实的,则不评估右侧操作数;表达式的值是左手值。

  • 否则,将评估右侧操作数,表达式的结果为其值。

" Falsey"值是在用作布尔值时强制为false的任何值。这些是0""NaNundefinednull,当然还有false

" Truthy"值是任何不是假的值。

更多关于我的博客:JavaScript's Curiously-Powerful OR Operator (||)(我一直有意做&&版本的那个......)