即時関数など丸括弧で覆う場合はその前にセミコロンが必要。
セミコロンあまり使ってなくてはまってしまったのでメモ。
Uncaught TypeError: (intermediate value)(…) is not a function
ここの115の回答にあるけども、
window.Glog = function(msg) {
console.log(msg);
}; // <--- Add this semicolon
(function(win) {
// ...
})(window);
『ECMAScript仕様には、自動セミコロン挿入のための特別な規則がありますが、この場合、次の行で始まるカッコで囲まれた式は関数呼び出しの引数リストとして解釈できるため、セミコロンは自動的に挿入されません。』(自動翻訳)
これと同じことらしい
window.Glog = function(msg) {
console.log(msg);
}(function(win) {
// ...
})(window);
つまり、'('前にセミコロンがないと'(...)'がその前にある文字の引数になってしまうらしい。
だから';(...)'だとか、単純に'(...)'の前にある式や文の末尾にセミコロンを付ければいいらしい。