let a = 10;
a && console.log('log');
Как это работает? Почему выводится вообще что то если условие было записано не в if а просто в коде?Как вообще можно сравнить число с выводом? Это же сравнить не сравнимое. Объясните пожалуйста
let a = 10;
a && console.log('log');
Как это работает? Почему выводится вообще что то если условие было записано не в if а просто в коде? value1 && value2 && value3;
Используя оператор &&, значения проверяются с лево на право до тех пор, пока не достигнет falsy значение или конец выражения. Это значение "возвращается". const a = 'a' && 'b' && 'c';
console.log(a); // Выведет 'c'
// выведет последнее значение в цепи && операторов
// потому что все значения являются truthy значениями
const a = 2 && 4 && 3 && 0 && 6;
console.log(a); // Выведет 0
// первое falsy значение в цепи && операторов
// потому что 0 является falsy значением
Переменная a лишь для наглядности. Можно и так записать: console.log('a' && 'b' && 'c'); // выведет 'c'.
В случае с console.log(a) 2 && 4 && 3 && console.log(5) && 6;
Тоже самое в случае с console.log(). console.log() выполняется и возвращает undefined. 2 && 0 && 3 && console.log(5) && 6;
То console.log() не выполнится. let a = 10;
if (a) {
console.log('log');
}
Правда работает такая запись далеко не в любых ситуациях. Поэтому лучше использовать if в одну строку или полноценный тернарный оператор с false в качестве значения для else.
Нет никаких "полноценных".
Они или есть или его нет.