Yos*_*Yos 3 javascript boolean-logic ternary-operator
据我所知,在Javascript中伪造的值之后不会执行表达式。例如下面的语句:
const result = undefined && 5;
console.log(result);
Run Code Online (Sandbox Code Playgroud)
result
将是不确定的。
然而:
const result = false && false ? 'T' : 'F';
console.log(result);
Run Code Online (Sandbox Code Playgroud)
result
将等于F
。为什么仍然执行三元表达式?
这是因为运算符优先级:&&
优先级(6)比? :
(4)高,因此
false && false ? 'T' : 'F'
Run Code Online (Sandbox Code Playgroud)
评估为
(false && false) ? 'T' : 'F'
Run Code Online (Sandbox Code Playgroud)
因此,左侧求值false
第一个(取第一个false
),然后继续条件运算符。
如您所料,如果您在后面加上括号&&
,result
则将是false
:
false && false ? 'T' : 'F'
Run Code Online (Sandbox Code Playgroud)