¿Qué significa la expresión Javascript 'a = a || función () {…} 'significa?

No estoy seguro de lo que significa esta construcción, pero la he visto varias veces. El siguiente ejemplo es de otra pregunta de desbordamiento de pila. No estoy seguro de cómo interpretar la construcción inicial "o":

Object.keys = Object.keys || (function () {
  var hasOwnProperty = Object.prototype.hasOwnProperty,
      hasDontEnumBug = !{toString:null}.propertyIsEnumerable("toString"),
      DontEnums = [ 
          'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty',
          'isPrototypeOf', 'propertyIsEnumerable', 'constructor'
      ],
      DontEnumsLength = DontEnums.length;
  //etc...
});

Respuestas a la pregunta(4)

Su respuesta a la pregunta