我正在尝试找到一种访问作用域函数的方法-以以下代码为例:

(function() {
  one();
  console.log('IIFE END');

  function scoped() {
    console.log('scoped');
  }

  scoped();
})();

function one() {
  console.log('one');
}

 scoped(); // error

如何访问对函数的调用以防止错误?使用return关键字失败

最佳答案

根据您的灵活程度,可以执行以下操作:

const scoped = (function() {
  one();
  console.log('IIFE END');

  function scoped() {
    console.log('scoped');
  }

  scoped();
  return scoped;
})();

function one() {
  console.log('one');
}

scoped(); // NO error :)


或者,如果函数的返回值保留给其他使用,请执行以下操作:

var scoped;  // If you don't want this pre-declaration, you can just use a global scope instead (e.g. window.scoped)

(function() {
  one();
  console.log('IIFE END');

  scoped = function() {
    console.log('scoped');
  }

  scoped();
})();

function one() {
  console.log('one');
}

scoped(); // NO error :)

10-04 15:46