さて、根本的な問題ですが、jsファイルって何のために作るんでしょうか。
・機能ごとに分割するため
・HTML内の記述が長すぎるとメンテしづらい
・JSの処理を直すだけの時にはHTMLファイルを変更したくない
・etc etc
というような感じですよね。
関数単位でjsファイルに書いておいてHTML上では起動だけにしようと。一般的にそういう構想ではないかと思います。
しかし。
次のようなパターンは、IEが意図した通りに動作してくれない場合があります。
a.js
function hogehoge(){ // do something }index.html
hogehoge();または
$().ready(function(){ hogehoge(); });index.html側のhogehoge();の実行時に、オブジェクトを指定せよ的なエラーになります。「関数が定義されていない」ということを言いたいようです。ということはつまり、関数実行のタイミングで、関数の定義の方が認識されきっていない、ということになります。
IE javascript 実行順とググるといろいろ出てきます。
結果が必ずしも一定でないところがさらに困ったものです。
いろいろ回避策は確かにあるのですが、開発者目線では、Javascriptのみで解決する必要もないわけで、ようするにHTML側に書かれていれば良いわけですから、デザイン部分のHTMLとは別のViewファイルに分割するというのが一番てっとり早いのではないかと思います。
※追記
例を長々と書く必要はなかった。すばらしく簡潔な再現コードを書いた方がいらっしゃる。
http://skryo.com/blog/archives/207