据我所知,在Javascript中伪造的值之后表达式不会执行。例如下面的语句:
const result = undefined && 5;
console.log(result);
result
是不确定的。
但是:
const result = false && false ? 'T' : 'F';
console.log(result);
result
将等于F
。为什么仍然执行三元表达式?
答案 0 :(得分:9)
这是因为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);
答案 1 :(得分:1)
const result = false && false? 'T':'F'
我们知道三元表达式是IF else条件的简写,上面的语句就像
if(false && false){
return 'T'
}else{
return 'F'
}
所以结果值我们变成“ F”