よくGreasemonkeyスクリプトを見ると全体を無名関数(匿名関数)で囲っているものを見ることがあると思います。 (function(){ // 処理内容 })(); 何でこのような記述をしているかというと、歴史を掘り返すのは面倒なので簡潔に 昔はトップレベルに宣言した変数が外部に影響を出してしまっていた? 今はevalInSandboxで実行されているので無名関数で囲わなくても問題はない。 (この(function(){)()}自体がどういう動作をするかはfunction についてを読むといい) Greasemonkey extension のコードから実行時のスコープを調べる « ku Greasemonkeyの小話 - FFFF - 0x つまり、今は囲まなくても問題はない。(ただしGreasemonkeyに限る) でも、実際のスクリプトでは囲んでいる場合が多いと思うので