Как работают операторы присваивания логического И (&&=) и ИЛИ (||=)?
на сайте 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 шт):
Оператор логического И присваивания &&= вычисляет только правый операнд и присваивает значение левому, если левый операнд является истинным (truthy). Но NaN - это falsy значение, т.е. если привести его к Boolean, то результат будет fasle, поэтому в выражение value &&= 10; присваивание не происходит и остается значение NaN.
Логический оператор ИЛИ присваивание ||= вычисляет только правый операнд и присваивает значение левому, если левый операнд является ложным (falsy). В следующем выражение value ||= 20; в value всё ещё NaN - ложный, поэтому присваивание происходит, теперь value хранит 20.