Это сокращенный оператор, который позволяет вам свернуть
a = a & b
в
a &= b
Помимо побитовых операций над целыми числами, &=
можно использовать и с логическими значениями,позволяя вам свернуть
a = a && b
в
a &= b
Однако в случае логической операции расширенная форма имеет короткое замыкание, а последняя свернутая форма не закорачивается.
Пример:
let b()
- функция, которая возвращает значение, а также выполняет действия, влияющие на состояние программы
let a
- логическое значение, котороеfalse
если вы сделаете
a = a && b()
, произойдет короткое замыкание: поскольку a
равно false
, нет необходимости оценивать b
(и дополнительные вычисления, которые могутслучается внутри b()
пропускается).
С другой стороны, если вы делаете
a &= b()
, короткое замыкание не происходит: b
оценивается в любом случае,даже если a
равно false
(и оценка b()
не изменит логического результата), таким образом,любые дополнительные вычисления, которые могут произойти внутри b()
, выполняются.