Por que os operadores lógicos (&& e ||) sempre retornam um resultado booleano?
Por que esses operadores lógicos retornam um objeto e não um boolean
var _ = (obj.fn && obj.fn() ) || obj._ || ( obj._ = {} );
var _ = obj && obj._;
Quero entender por que ele retorna o resultado deobj.fn()
(se estiver definido) ORobj._
mas não resultado booleano.