Переменные Javascript не печатаются, поэтому f может быть назначено целочисленное значение, даже если оно было назначено с помощью логических операторов.
f присваивается ближайшее значение, которое не эквивалентно false . Итак, 0, false, null, undefined, все переданы:
alert(null || undefined || false || '' || 0 || 4 || 'bar'); // alerts '4'