繁体   English   中英

javascript中的短路评估

[英]Short circuit evaluation In javascript

我需要在代码中实现短路评估逻辑。 我读过一些文章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(); a() || b() && c();

情况3) a() && c() || b(); a() && c() || b();

情况1:

c()将不会执行。

情况2:

b()c()将不会执行

情况3:

b()将不会执行。

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

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

该规范非常方便, MDN也是如此

但简短的版本是:

  • &&||的左侧操作数 总是被评估,给我们左手边的值

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

  • || ,如果左侧值为 true,则不评估右侧操作数;否则为0。 表达式的值是左侧的值。

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

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

“ Truthy”值是任何不虚假的值。

我的博客上的更多内容: JavaScript的功能强大的OR运算符( || (我的意思是做那个的&&版本...)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM