Question: What's the difference between `|` and `||` in Javascript?

Furthermore, what's the difference between `&` and `&&`?

Answer: 
* `&` is [the bitwise AND operator](http://rx4ajax-jscore.com/resource/glossary/glossb.html#bitwise_and_operator)
* `|` is [the bitwise OR operator](http://rx4ajax-jscore.com/resource/glossary/glossb.html#bitwise_or_operator)
* `&&` is [the logical AND operator](http://www.devguru.com/technologies/ecmascript/quickref/logical_operators.html)
* `||` is [the logical OR operator](http://www.devguru.com/technologies/ecmascript/quickref/logical_operators.html)

The difference is that logical operators only consider each input at face value, treating them as whole, while [bitwise operators work at the bit level](http://en.wikipedia.org/wiki/Bitwise_operation):

```
var thetruth = false;
var therest = true;

var theuniverse = thetruth && therest; //false
var theparallel = thetruth && thetruth; //true

var theindifferent = thetruth || therest; //true
var theideal = thetruth || thetruth; // false

var thematrix = 5346908590;
var mrsmith = 2354656767;

var theoracle = thematrix & mrsmith; //202445230
var theone = thematrix | mrsmith; //7499120127

```
one more point i want to add is || operator is used to assign default value in case the value you are assigning is undefined. So for Exapmle you are assigning a obj to some object test and if you dont want test to be undefined then you can do the following to ensure that value of test wont be undefined.

var test = obj || {};

so in case obj is undefined then test's value will be empty object.

So it is also being used for assigning default value to your object.