更新:最近では、 webpackなどのモジュールバンドラーを使用して、または経由して、タグでES6 import
/を使用することをお勧めします。export
<script>
type="module"
両方のスクリプトファイルが同じページに含まれている場合、それらは同じグローバルJavaScriptコンテキストで実行されるため、2つの名前は互いに上書きされます。したがって、同じ名前の異なる.jsファイルに2つの関数を入れて、作成したとおりに両方にアクセスすることはできません。
最も簡単な解決策は、関数の1つを名前変更することです。
より良い解決策は、名前空間を使用してJavaScriptをモジュール式に記述し、各スクリプトファイルが可能な限り最小限の(できれば1つの)オブジェクトをグローバルスコープに追加して、個別のスクリプト間の名前の競合を回避することです。
JavaScriptでこれを行うにはいくつかの方法があります。最も簡単な方法は、各ファイルに1つのオブジェクトを定義することです。
// In your first script file
var ModuleName = {
myMain: function () {
var count=0;
count++;
myHelper(count);
alert(count);
},
myHelper: function (count) {
alert(count);
count++;
}
}
後のスクリプトファイルで、関数を呼び出します
ModuleName.myMain();
より一般的な方法は、次のような自己評価関数を使用することです。
(function (window, undefined) {
// Your code, defining various functions, etc.
function myMain() { ... }
function myHelper(count) { ... }
// More code...
// List functions you want other scripts to access
window.ModuleName = {
myHelper: myHelper,
myMain: myMain
};
})(window)