O código é o seguinte:
<body>
<a href="javascript:;" id="test">hello</a>
</body>
<script type="text/javascript">
document.getElementById("test").addEventListener("click", function () {
test()
}, false)
function test() {
var postTypes = new Array('hello', 'there')
(function() { alert('hello there') })()
}
</script>
Isso vai lançar um:
"TypeError não capturado: o objeto não é uma função"
Se eu envolver a chamada / invocação de função anônima em outro conjunto de parênteses, ele executará o alerta, mas ainda assim fornecerá um erro. Se eu colocar um ponto e vírgula após a definição de "var postTypes", tudo bem.
Fui levado a acreditar que o javascript não requer ponto-e-vírgula, então estou supondo que há algumas regras de associatividade estranhas de aplicação de função que não estou entendendo totalmente. Por que estou recebendo este erro?