1

JavaScript コードを複数の .js ファイルに分割したいと考えています。これらの .js のそれぞれには、$(document).ready(..) 内にある必要があるコードがあります。したがって、各ファイルで新しい $(document).ready(..) が開始されます。

fileb.js で宣言された filea.js 関数 (両方とも $(document).ready ブロック内) から呼び出すにはどうすればよいですか?

これが不可能な場合、代替案を提案できますか? ありがとうございました。

編集:グローバルスコープの使用を避けたいことを明確にしたいと思います。イベントのハンドラーとして名前付き関数を使用する行で何かを望んでいましたが、実際にそれを行う方法がわかりません。

4

3 に答える 3

4

ローカル変数をグローバルにすることができます

window.globalname = localname;

関数は変数であることを忘れないでください。

于 2012-04-21T18:56:46.033 に答える
2

あなたは本当にグローバルを宣言することから逃れることはできません。単一のグローバルを作成することはそれほど悪くはありません。その下にあるすべての関数に名前空間を付けることができます。

これをmain.jsファイルのようなものに入れて、共有関数をここに保持できるようにします。

// name this something unique to your page/site/app
var MYAPP = {};

// now we can attach functions to it

MYAPP.funcA = function() { /* ... */ };
MYAPP.funcB = function() { /* ... */ };

次に、各無名関数でMYAPP.funcA()、MYAPP.funcB()などにアクセスできます。MYAPPをその場で変更して、関数やプロパティなどを追加することもできます。

最終的には単一のグローバルがありますが(くそっ!)、適切に名前を付ければ、アプリコードを安全に配置できるグローバル名前空間を作成することになります。

于 2012-04-21T19:41:32.953 に答える
1

ファイルが順番にロードされている限り (つまり、関数はそれらを呼び出すfilea.js前にロードされfileb.jsます)、問題はありません。

ファイルが最初に依存関係をロードすることを確認するには、require.js または head.js を検討できます。

私は後者で運が良かった:http://headjs.com/

于 2012-04-21T18:52:51.767 に答える