1. ホーム
  2. javascript

グローバル変数を使用せずに他の関数から変数にアクセスする

2023-09-04 07:43:07

質問

グローバル変数は本質的に厄介で邪悪なものだといろいろなところから聞いていますが、オブジェクト指向でないJavascriptを行う場合、それを避ける方法がわかりません。たとえば、乱数などを使用した複雑なアルゴリズムで数値を生成する関数があり、その特定の数値をコールバックまたは何か他の関数で使用し続ける必要があるため、同じ関数の一部であることができないとします。

元々生成された数値がローカル変数であれば、そこからはアクセスできません。関数がオブジェクト メソッドであれば、数値をプロパティにすることができますが、そうではないので、このためにプログラム構造全体を変更するのはやや複雑すぎるように思われます。グローバル変数が本当に悪いのでしょうか?

どのように解決するのですか?

関数Aで計算された変数を関数Bで見えるようにするには、3つの選択肢があります。

  • それをグローバルにする。
  • オブジェクトのプロパティにする、または
  • AからBを呼び出す際にパラメータとして渡す。

プログラムがかなり小さいのであれば、グローバルはそれほど悪いものではありません。 そうでなければ、私は3番目の方法を使用することを検討します。

function A()
{
    var rand_num = calculate_random_number();
    B(rand_num);
}

function B(r)
{
    use_rand_num(r);
}