JavaScriptにおけるクロージャを利用したモジュールの変数と関数のエクスポート

時には、モジュール内の一部の変数や関数を外部から利用可能にする必要があります。 その方法を見てみましょう。 以下のようなモジュールがあるとします:

javascript;(function() {
  let str = 'モジュールの変数';
  
  function func() {
    alert('モジュールの関数');
  }
})();

関数 func をエクスポートしてみましょう。 そのためには、ブラウザに組み込まれたオブジェクト window のプロパティとしてそれを設定します:

javascript;(function() {
  let str = 'モジュールの変数';
  
  function func() {
    alert('モジュールの関数');
  }
  
  window.func = func;
})();

これで、モジュールの外部からこの関数を呼び出すことができます:

javascript;(function() {
  let str = 'モジュールの変数';
  
  function func() {
    alert('モジュールの関数');
  }
  
  window.func = func;
})();

window.func(); // 'モジュールの関数' と表示されます

なお、関数は必ずしも window オブジェクトのプロパティとして呼び出す必要はありません:

javascript;(function() {
  let str = 'モジュールの変数';
  
  function func() {
    alert('モジュールの関数');
  }
  
  window.func = func;
})();

func(); // 'モジュールの関数' と表示されます
Задание 1

以下のモジュールが与えられています:

javascript;(function() {
  let str1 = 'モジュールの変数';
  let str2 = 'モジュールの変数';
  let str3 = 'モジュールの変数';
  
  function func1() {
    alert('モジュールの関数');
  }
  function func2() {
    alert('モジュールの関数');
  }
  function func3() {
    alert('モジュールの関数');
  }
})();

変数のうち1つと、任意の2つの関数を外部にエクスポートしてください。