Estranho comportamento de análise de JSON em js, “Token inesperado:”

Como demonstrado emeste jsfiddle, se você tiver um arquivo JS e criar um objeto JSON sem usá-lo, ele se comportará de maneira diferente, dependendo de as chaves (membros) estarem ou não entre aspas.

código válido:{ a: 1};
Código inválido:{ "a": 1 };

O que você vai conseguir é uma mensagem de erro (no Chrome, diferente para FF / IE, mas ainda falha na sintaxe)

Untaught SyntaxError: Token inesperado:

mas se você usar o objeto de alguma forma, por exemplo:alert({ "a": 1 }); tudo está bem novamente.

Por que isso acontece?

questionAnswers(3)

yourAnswerToTheQuestion