&&と||は論理演算子として多くの言語で「AND」「OR」と同じように使われます。
以前javascriptのboolean値についてで述べたようにJavascriptのboolean型は少し特殊で、&&と||は必ずしもbooleanを返すわけではないとのことです。
リファレンスによると、expr1 && expr2は
expr1 を false と見ることができる場合は、expr1 を返します。そうでない場合は、expr2 を返します。したがって、真偽値と共に使われた場合、 演算対象の両方が true ならば、&& は、true を返し、そうでなければ、false を返します。
expr1 || expr2は、
expr1 を true と見ることができる場合は、expr1 を返します。そうでない場合は、expr2 を返します。したがって、真偽値と共に使われた場合、 演算対象のどちらかが true ならば、|| は、true を返し、両方とも false の場合は、false を返します。
var zero = 0; //falseと見ることもできる var one = 1; //trueと見ることもできる var two = 2; //同様にtrue var a = zero && one; //0 var b = one && zero;//0 var c = one && two; //2 var d = two && one; //1 var e = zero || one; //1 var f = one || zero;//1 var g = one || two; //1 var h = two || one: //2 var i = zero && zero;//0 var j = zero || zero;//0