【问题标题】:Why ternary expression is executed after falsy value in Javascript?为什么在Javascript中的假值之后执行三元表达式?
【发布时间】:2020-01-07 01:23:57
【问题描述】:

据我所知,在 Javascript 中的虚假值之后不会执行表达式。例如在下面的语句中:

const result = undefined && 5;
console.log(result);

result 将未定义。

但是:

const result = false && false ? 'T' : 'F';
console.log(result);

result 将等于F。为什么三元表达式仍然执行?

【问题讨论】:

标签: javascript ternary-operator boolean-logic


【解决方案1】:

这是因为operator precedence&& 的优先级 (6) 高于 ? : (4),所以

false && false ? 'T' : 'F'

评估为

(false && false) ? 'T' : 'F'

因此,左侧首先计算为false(取第一个false),然后继续到条件运算符。

如果您在&& 后面加上括号,则result 将是false,正如您所期望的那样:

const result = false && (false ? 'T' : 'F');
console.log(result);

【讨论】:

    【解决方案2】:

    const 结果 = 假 && 假? 'T' : 'F'

    我们知道三元表达式是IF else条件的缩写形式,上面的语句就像

    if(false && false){ 
        return 'T'
    }else{
        return 'F'
    }
    

    所以我们得到的结果值是“F”

    【讨论】:

      猜你喜欢
      • 2019-05-19
      • 2013-10-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-05
      • 2021-01-03
      • 1970-01-01
      • 2012-11-22
      相关资源
      最近更新 更多