在Javascript中,为什么三元表达式在falsy值之后执行?

在Javascript中,为什么三元表达式在falsy值之后执行?,javascript,ternary-operator,boolean-logic,Javascript,Ternary Operator,Boolean Logic,据我所知,表达式不会在Javascript中的falsy值之后执行。例如,在以下语句中: const result=undefined&&5; 控制台日志(结果)这是因为:&&的优先级(6)高于?:(4),所以 评估为 (false && false) ? 'T' : 'F' 因此,左侧首先计算为false(取第一个false),然后继续计算条件运算符 如果在和&后面加上括号,结果将是假,正如您所期望的: const result=false&(false'T':'F');

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

const result=undefined&&5;
控制台日志(结果)这是因为:
&&
的优先级(6)高于
?:(4),所以

评估为

(false && false) ? 'T' : 'F'
因此,左侧首先计算为
false
(取第一个
false
),然后继续计算条件运算符

如果在
和&
后面加上括号,
结果将是
,正如您所期望的:

const result=false&(false'T':'F');

控制台日志(结果)const result=false&&false?“T':'F'

正如我们所知,三元表达式是IF-else条件的一种简短形式,上面的语句如下

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

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

astexplorer可以帮助回答这样的问题。如果查看JavaScript解析器如何解析提供的代码,您将看到
&&
具有更高的优先级。
if(false && false){ 
    return 'T'
}else{
    return 'F'
}