0

複雑なコードがあります。これはそのサンプルです。構造を変更できません。どうすれば電話できe()ますf()か?

a=function b()
    {
        var c,d;
        c=function()
        {
              function e()
              {
              ...
              }
              ...
        }
        d=function()
        {
              function f()
              {
              //i need e() here
              }
              ....
        }

}
4

2 に答える 2

2

これらは異なるスコープ内のローカル関数であり、相互にアクセスできないため、できません。のスコープe()内から呼び出す必要がある場合は、 のスコープ内ではなく、 のスコープ内で表示される 内で定義する必要があります。f()e()c()b()f()

于 2012-10-21T12:01:05.703 に答える
1

できません。それがスコーピングの要点です。

ただし、変数eを function の外で宣言することにより、変数を親スコープで使用できるようにすることができますc

a = function b() {
  var c, d, e;
  c = function () {
    e = function () {
      ...
    };
    ...
  };
  d = function () {
    function f() {
      e();
    }
    ...
  };
};
于 2012-10-21T12:00:50.477 に答える