JavaScript是否具有非短路布尔运算符? [英] Does JavaScript have non-shortcircuiting boolean operators?

查看:77
本文介绍了JavaScript是否具有非短路布尔运算符?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在JavaScript中

In JavaScript

(f1() || f2())

如果f1返回true,则

不会执行f2,这通常是一件好事,除非不是. ||是否有不会短路的版本?

won't execute f2 if f1 returns true which is usually a good thing except for when it isn't. Is there a version of || that doesn't short circuit?

类似

var or = function(f, g){var a = f(); var b = g(); return a||b;}

推荐答案

不是,JavaScript与Java不同,唯一的逻辑运算符是短路的

Nope, JavaScript is not like Java and the only logical operators are the short-circuited

https://developer.mozilla.org/en/JavaScript/Reference /Operators/Logical_Operators

也许这可以帮助您:

http://cdmckay.org/blog/2010/09/09/eager-boolean-operators-in-javascript/

| a     | b     | a && b | a * b     | a || b | a + b     |
|-------|-------|--------|-----------|--------|-----------|
| false | false | false  | 0         | false  | 0         |
| false | true  | false  | 0         | true   | 1         |
| true  | false | false  | 0         | true   | 1         |
| true  | true  | true   | 1         | true   | 2         |

| a     | b     | a && b | !!(a * b) | a || b | !!(a + b) |
|-------|-------|--------|-----------|--------|-----------|
| false | false | false  | false     | false  | false     |
| false | true  | false  | false     | true   | true      |
| true  | false | false  | false     | true   | true      |
| true  | true  | true   | true      | true   | true      |

基本上(a && b)短路,而!!(a + b)不是,它们产生相同的值.

Basically (a && b) is short-circuiting while !!(a + b) is not and they produce the same value.

这篇关于JavaScript是否具有非短路布尔运算符?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆