Как работают операторы присваивания логического И (&&=) и ИЛИ (||=)?
на сайте 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
.