Задача функции вернуть минимальное число из двух.
Не могу понять почему она работает, почти всегда, за одним исключением.
function min(a, b) {
return a < b && a||b;
}
console.log( min(5, 6) ); // Вернет 5
Здесь например, по моему мнению, такой порядок событий:
1) 5 < 6, возвращает true
2) true && 5||6
3) 5||6, возвращает 5, т.к. в логическом контексте 5 = true, а || останавливается на первом попавшемся true и возвр. исходное значение
Пока вроде бы все сходится.
console.log( min(6, 5) ); // Вернет 5
Здесь так:
1) 6 < 5, возвращает false
2) false && 6||5, возвращает false, т.к. && останавливается на первом false и возвр. исходное значение (false, а не 5) ?console.log( min(0, 6) ); // Вместо 6 любое может быть положительное число
В данном случае возвращает 6. Почему так?