Por que os resultados variam com base no posicionamento das chaves?

Por que os trechos de código abaixo, retirados deEste artigo, produzir resultados diferentes devido a apenas uma única alteração na colocação de chaves?

Quando a cinta de abertura{ está em uma nova linha,test() retornaundefinede "não - quebrou: indefinido" é exibido no alerta.

function test()
{
  return
  { /* <--- curly brace on new line */
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript); // does this work...?
} catch (e) {
  alert('no - it broke: ' + typeof r);
}

Quando a chave está na mesma linha quereturn, test() retorna um objeto e "fantástico" é alertado.

function test()
{
  return { /* <---- curly brace on same line */
    javascript: "fantastic"
  };
}

var r = test();
try {
  alert(r.javascript); // does this work...?
} catch (e) {
  alert('no - it broke: ' + typeof r);
}

questionAnswers(6)

yourAnswerToTheQuestion