Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript ES7中使用幂运算的逆蕴涵逻辑?_Javascript_Boolean Logic_Boolean Expression_Short Circuiting_Ecmascript 2016 - Fatal编程技术网

Javascript 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()) 由于短路机制,有几个潜在的不良影响: 如果

根据这一点,我们知道

我认为我们可以通过ES7中的求幂运算符来实现

给定函数
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]})