javascript - Why is it common practice in JS libraries to duplicate variable name and adding 'or object' -
i trying better grip on js syntax , wondering why common practice in many libraries repeat object name after variable same name has been declared. please see below:
var backbone = backbone || {}; // <= why duplication? or
var listeners = this._listeners || (this._listeners = {}); update:
after further research have found written article evaluates many idiomatic expressions.
the article explains use behind invoked function expressions (iife), i.e wrapping of function within function, such:
(function() { console.log('hello!'); })(); which 1 of js brainteasers newbies me can't quite understand.
var backbone = backbone || {}; means if backbone undefined or null or false, set {}
longer explanation:
the assignment operator evaluates right left , logical operators(even though javascript doesn't have real logical operators work on non-boolean operands well) evaluate left right.
an expression a || b returns b if a undefined, null, or false.
so a = || b either keeps a value if has 1 or assigns b a.