Javascript ES7中使用幂运算的逆蕴涵逻辑?
根据这一点,我们知道 我认为我们可以通过ES7中的求幂运算符来实现 给定函数Javascript ES7中使用幂运算的逆蕴涵逻辑?,javascript,boolean-logic,boolean-expression,short-circuiting,ecmascript-2016,Javascript,Boolean Logic,Boolean Expression,Short Circuiting,Ecmascript 2016,根据这一点,我们知道 我认为我们可以通过ES7中的求幂运算符来实现 给定函数f()和g()的返回值是boolean。所以我们可以使用这个简单的代码 if (g() ** f()) { // } 取代 if ((g() && f()) || !f()) { // } 一些测试代码是。它在ES7下是否有效?声明: if ((g() && f()) || !f()) { if (g() ** f()) 由于短路机制,有几个潜在的不良影响: 如果
f()
和g()
的返回值是boolean
。所以我们可以使用这个简单的代码
if (g() ** f()) {
//
}
取代
if ((g() && f()) || !f()) {
//
}
一些测试代码是。它在ES7下是否有效?声明:
if ((g() && f()) || !f()) {
if (g() ** f())
由于短路机制,有几个潜在的不良影响:
g()
g()
是真实的,并且第一个f()
也是真实的,则计算if
块的内容g()
if ((g() && f()) || !f()) {
if (g() ** f())
两个函数中的结果只计算一次,然后将结果逻辑组合到分支
根据所需的副作用和/或评估顺序,您应使用:
let gVal = g(), fVal = f();
if(gVal || !fVal) { ... }
或
话虽如此,回答问题本身。。。ECMAScript 2016尚未定稿,但您的假设似乎是正确的。是的,在ES6中,指数运算可用于逆向含义
你可以验证这个即使它是有效的,使用它有什么意义?我看不出它能使表达式更有效,也更清晰。使用
g()| |!f()
相反,它更具可读性。Try:[[false,false],[false,true],[true,false],[true,true]]].map(函数(a){返回a[0]| | |!a[1]})