Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why ternary expression is executed after falsy value in Javascript?

As far as I know expressions are not executed after falsy values in Javascript. For example in the following statement:

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

result will be undefined.

However:

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

result will be equal to F. Why is the ternary expression still executed?

like image 896
Yos Avatar asked Dec 23 '22 21:12

Yos


1 Answers

This is because of operator precedence: && has higher precedence (6) than ? : (4), so

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

evaluates to

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

So, the left-hand side evaluates to false first (taking the first false), and then goes on to the conditional operator.

If you had put parentheses after the &&, result would be false, as you're expecting:

const result = false && (false ? 'T' : 'F');
console.log(result);
like image 81
CertainPerformance Avatar answered Jan 14 '23 15:01

CertainPerformance