Le code est le suivant:
<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>
Cela lancera un:
"Uncaught TypeError: l'objet n'est pas une fonction"
Si j'emballe l'appel / l'invocation de fonction anonyme dans un autre ensemble de parenthèses, il exécutera l'alerte, mais me donnera toujours une erreur. Si je mets un point-virgule après la définition de "var postTypes", cela ira parfaitement.
J'ai été amené à croire que javascript ne nécessite pas de points-virgules, donc je suppose qu'il existe des règles d'associativité étranges d'application de fonction que je ne comprends pas entièrement. Pourquoi ai-je cette erreur?