JavaScriptでグローバル変数を使って別ファイルの関数を実行させる
今回は少し小ネタ的な使い方になるのですが、JavaScriptで別ファイルで定義した関数を実行したい場合に使える方法です。今では、JavaScriptのimportやrequireなどでモジュールとして呼び出すこともできますが、何らかの状況でJSファイルが分かれており、そこに定義されている関数を使いたいということもあるかと思います。
そのような場合には、windowオブジェクトのグローバル変数として関数を定義することでどこからでも呼び出せるようになります。まずはサンプルのHTMLを見ていきます。
【index.html】※一部抜粋
ゼロからスクリプトを書いていく場合にはあまりないかもしれませんが、すでに完成しているサイトの改修であったり、スポットで機能追加などの場合には使えるのではないでしょうか。ただしグローバル関数となるので不必要に使いすぎないように気をつけたいですね。
<body> ..... <button id="button">Click!!</button> <script src="hoge.js"></script> <script src="fuga.js"></script> </body>よくあるようなボタンクリックで処理が実行されるようなもので、ここでは2つの異なるJSファイルが使われています。1つ目のJSファイルには、別ファイルで呼び出したい処理が定義されています。ここでは次のようなものを用意しました。 【hoge.js】
const hogeFunction = () => { console.log('hoge.jsで定義された関数です'); } // windowオブジェクトのグローバル変数用キーに定義した関数を入れる window.globalFunction = {}; window.globalFunction.hoge = hogeFunction;本来、この処理はこのJSファイルから実行されることになりますが、もう一方のJSファイルから実行したい場合には、このように、windowオブジェクトにグローバル変数として追加する形となります。まずはwindowオブジェクトに対してグローバル関数用のキーを設定し(ここではglobalFunctionという名前にしています)空のオブジェクトを入れておきます。 そして、その定義したオブジェクト内に設定した関数用キーの値に先ほどの関数を入れるようにします。こうすることでグローバル変数のキーを指定するとグローバル関数として先ほど定義した関数を呼び出すことができます。実際にコンソールでwindowオブジェクトの中身を確認してみます。
console.log(window.globalFunction); // console { hoge: () => { console.log('hoge.jsで定義された関数です'); }, ...... name: "hogeFunction" ...... }このように先ほど定義した関数がwindowオブジェクトのキーの中に入り、グローバル関数として呼び出せるようになりました。あとは、別のJSファイルからwindowオブジェクトにあるキーを指定するだけでOKです。 【fuga.js】
document.getElementById('button').addEventListener('click', () => { window.globalFunction.hoge(); }); // console hoge.jsで定義された関数です実行するとこのように別ファイルからでも関数を使えることが確認できました。もちろん引数も同じように使うことができます。
ゼロからスクリプトを書いていく場合にはあまりないかもしれませんが、すでに完成しているサイトの改修であったり、スポットで機能追加などの場合には使えるのではないでしょうか。ただしグローバル関数となるので不必要に使いすぎないように気をつけたいですね。
sponserd
keyword search
recent posts
- GSAPとvivusを使ったSVGのドローアニメーション
GSAPとvivusを使ったSVGのドローアニメーション
- GSAPでScrollTriggerプラグインを使ったスクロール固定表示アニメーションの応用
GSAPでScrollTriggerプラグインを使ったスクロール固定表示アニメーションの応用
- Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #3
Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #3
- Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #2
Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #2
- Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #1
Shopifyでオリジナルテーマ制作やテーマカスタマイズで使えるTips #1
- ViteでReactとReact Routerを使ってみる
ViteでReactとReact Routerを使ってみる
- ViteでPugのコンパイル環境を導入する
ViteでPugのコンパイル環境を導入する
- ViteでMarkuplintとPrettierを使える環境を構築する
ViteでMarkuplintとPrettierを使える環境を構築する
categories