JavaScript是否具有非短路布尔运算符? [英] Does JavaScript have non-shortcircuiting boolean operators?
本文介绍了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屋!
查看全文