Es2021 introduced Logical Operators and Assignment Expressions as part of the latest features.

Before ES2021, Javascript has the following logical operators.

These logical operators are applied to variables or operands.

Operator Name Description Example
&& And evaluates true if both are true true && true returns true
` ` OR
! NOT evaluates true if operand is false !true returns false

The above operators only check logical operation and returntrue or false based on operands.

It introduced new features and syntax to existing logical operators ES2021.

What does logical operators and assignment expressions do?

The following operators are introduced in ES2021.

  • logical AND operator assignment expression (&&=)
  • logical OR operator assignment expression (||=)
  • logical Double question operator assignment expression (??=)

logical AND operator assignment expression (&&=)

logical AND assignment expression apply to two variables or operands of a javascript expression.

if one the value or operand expression returns a truthy result, Then this operator assigns a second variable value to the first variable

Here is an example

let variable1 = 1;
let variable2 = 12;
variable1 &&= variable2;
console.log(variable1) // outputs 12

In the above example, variable1 is truthy value, truthy value is number or true, etc.

The above code is equal to

let variable1 = 1;
let variable2 = 12;

if(variable1){
    variable1 = variable2;

}
console.log(variable1) // outputs 12

logical AND operator assignment expression (||=)

This also applies to two variables/operands or javascript expressions.

if the first variable returns falsely values, then the second variable is assigned to the first variable

let variable1 = undefined;
let variable2 = 44;
variable1 ||= variable2;
console.log(variable1) // outputs 44

As you see variable1 is falsely values, falsely values are undefined, null, zero

let variable1 = undefined;
let variable2 = 12;

if(!variable1){
    variable1 = variable2;

}
console.log(variable1) // outputs 12

logical Double question operator assignment expression (??=)

This also applies to two variables or operands in JavaScript.

if the first variable/operand is null or undefined, Then the second variable is assigned with the first variable

let variable1 = undefined;
let variable2 = 44;
variable1 ??= variable2;
console.log(variable1) // outputs 44

variable1 is undefined, which means variable2 is assigned with variable1

The above code is equivalent to

let variable1 = undefined;
let variable2 = 44;
if((variable1 ==null)||(variable2=undefined)){
    variable1=variable2;
}
console.log(variable1) // outputs 44

Notes:

  • Logical operators assignment expressions are applied to variable/operand/JavaScript expression
  • Advantage with this is the shorter syntax
  • Syntax confusion initially but easy to understand