Il codice è il seguente:
<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>
Questo lancerà un:
"Errore di tipo non rilevato: l'oggetto non è una funzione"
Se racchiudo la chiamata / invocazione della funzione anonima in un altro set di parentesi, verrà eseguito l'avviso, ma mi darà comunque un errore. Se metto un punto e virgola dopo la definizione "var postTypes" allora andrà benissimo.
Sono stato portato a credere che javascript non richieda i punti e virgola, quindi sto ipotizzando che ci siano alcune strane regole di associatività dell'applicazione delle funzioni che non comprendo appieno. Perché ricevo questo errore?