Im looking at some Backbone.js examples and they have var app = app || {};
at the top of all .js files. I understand the literal meaning of this, but what does it do in reference to everything else?
Edit: you guys are really really fast.
Im looking at some Backbone.js examples and they have var app = app || {};
at the top of all .js files. I understand the literal meaning of this, but what does it do in reference to everything else?
Edit: you guys are really really fast.
It will define the variable app
to an empty object if it is not already defined.
This works because being undefined evaluates to false
in Javascript.
If it is defined, it may still be re-defined as an empty object if it has a value which evalutes to false
, such as an empty string.
The ||
operator in javascript will return the first operand if it is "truthy". If not, it will return the second operand. If app
has not been assigned, it will be undefined
, which is "falsey". Thus if it is not defined or is otherwise falsey, an empty object {}
will be assigned to app
.
This means "define app as an empty object if it's not already defined".
The OR
operator in JavaScript
does not necessarily yield a boolean
. If the left-hand side of the expression yields false
then the assignment takes the right-hand side of the expression.
If app
is already defined, the it does nothing.
If app
is not defined, then it's equivalent to var app = {};