¿Qué significa la construcción x = x || y?


Estoy depurando algo de JavaScript, y no puedo explicar lo que esto || hace?

function (title, msg) {
  var title = title || 'Error';
  var msg   = msg || 'Error on Request';
}

¿Puede alguien darme una pista, por qué este tipo está usando var title = title || 'ERROR'? A veces lo veo sin una declaración var también.


Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32

Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52