See the questions described in the comments, # 1621 , # 1929 and # 2236 .
In short, there is an error on some platforms where typeof not a string unless you store it in a variable.
|| false || false fixes the problem without introducing an additional variable.
Taken directly from # 1621 :
In IE8, with a variable, everything works as expected:
var t = typeof obj t === 'function' // false t === 'object' // true
but without it, everything is different:
(typeof obj) === 'function' // true, but SHOULD be false (typeof obj) === 'object' // true
The additional check described above corrects the error.
Nit
source share