ПРИМЕЧАНИЕ: изначально я думал, что проблема была вызвана чем-то более сложным;Теперь я вижу (и отредактировал заголовок и пример кода), что единственным отличием является наличие или отсутствие точки с запятой.Это может затруднить ответ, но я все еще был удивлен, увидев конечную точку с запятой в этом случае, а не в других ...
Почему это работает:
<script type="text/javascript">
this.someFunc = function () {};
(function () {
console.log("self-invoking function called.")
})();
</script>
но это не так:
<script type="text/javascript">
this.someFunc = function () {}
(function () {
console.log("self-invoking function called.")
})();
</script>
и, тем не менее, это так:
<script type="text/javascript">
this.someFunc = function () {}
var someVar = "value";
console.log("someVar is:"+someVar);
</script>
Последний интерпретирует самопризывающую функцию как undefined
и поэтому не может оценить/ выполнить его.Протестировано на Chrome 13, Firefox 6 и Safari 5 на OSX.