Как работают операторы присваивания логического И (&&=) и ИЛИ (||=)?

на сайте javaScript. ru ( онлайн учебник по js) В теме "логические операторы" есть задача:

let value = NaN;

value &&= 10;
value ||= 20;
value &&= 30;
value ||= 40;

alert(value);

не понимаю почему ответ именно "30" в пояснении написано:

value &&= 30
value=20

20 конвертируется в логическое значение true value истинно, поэтому присваивание срабатывает

почему value=20, если в других строчках, например value &&= 10 value не равно 10, а NaN(

объясните, пожалуйста, я не могу понять


Ответы (1 шт):

Автор решения: Be3y4uu_K0T

Оператор логического И присваивания &&= вычисляет только правый операнд и присваивает значение левому, если левый операнд является истинным (truthy). Но NaN - это falsy значение, т.е. если привести его к Boolean, то результат будет fasle, поэтому в выражение value &&= 10; присваивание не происходит и остается значение NaN.

Логический оператор ИЛИ присваивание ||= вычисляет только правый операнд и присваивает значение левому, если левый операнд является ложным (falsy). В следующем выражение value ||= 20; в value всё ещё NaN - ложный, поэтому присваивание происходит, теперь value хранит 20.

→ Ссылка