在Javascript中,为什么三元表达式在falsy值之后执行?
据我所知,表达式不会在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');
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'
}