Pull to refresh

Comments 4

UFO just landed and posted this here
x &&= y эквивалентно x && (x = y), но не эквивалентно x = x && y.
x ||= y эквивалентно x || (x = y), но не эквивалентно x = x || y.

Не понял, в чем разница? По таблицам истинности очень даже эквивалентно. В JS ведь нельзя переопределять операторы.


Кстати, читать таблицу истинности в формате


0 0
0 1
1 1
1 0

неудобно. Лучше изменить на традиционный


0 0
0 1
1 0
1 1
Разница в том, что x = x && y всегда присваивает (переписывает) значение.
const obj = {
    x: 5,
    set x(a) {
        console.log('here');
    }
};

obj.x &&= 4; // сеттер здесь не вызывается
obj.x = obj.x && 4;
Разница будет если x — это свойство, у которого определен сеттер с сайд-эффектами
Sign up to leave a comment.