var userName = “”;
userName ? console.log("Hello, " + ${userName}
) : console.log(“Hello!”);
username = console.log("Hello, " + ${userName}
) || console.log(“Hello!”);
Hi so the top line works as a ternary if else, I tried to do a similar thing using pipes but its doesnt work, it logs both hellos instead of just the “Hello”.
Why??
The first statement is equivalent to:
if (userName) {
console.log(`Hello, ${userName}`);
} else {
console.log("Hello!");
}
Since you have initialized userName
as the empty string ""
, so userName
is Falsy and only the else
block is executed.
In the second statement,
username = console.log(`Hello, ${userName}`) || console.log("Hello!");
you are using the ||
operator to assign a value to the username
variable. The first operand i.e.
console.log(`Hello, ${userName}`)
is evaluated. Evaluation causes the string "Hello, "
to be printed. But, the return value of a console.log()
statement is undefined
(see documentation). Since evaluation of the first operand results in a falsy value, so then the second operand is evaluated. This causes "Hello!"
to be printed, but again the return value of console.log()
is undefined
. So, undefined
is assigned to the variable username
.
1 Like