まず、undefinedについて。これは、undefinedという値はJSでは上書き可能なので、こうやって、渡されない引数を使えば、このfunction内では確実にundefinedがundefinedであることを保証できる$=jQueryは、$がjQueryであると中で保証させるするためwindow, documentについては意味ないんじゃ?と思いきや、これは、主にJSのminifierのため。これをやると、JSのminifierは、関数内でwindow,documentという文字を一文字の変数に置き換えるので、ちょっと軽くなる。あとこのwindow,documentについては、ものっっっっすごいわずかだけどパフォーマンスが上がる