我正在尝试找到一种访问作用域函数的方法-以下面的代码为例:
(function() {
one();
console.log('IIFE END');
function scoped() {
console.log('scoped');
}
scoped();
})();
function one() {
console.log('one');
}
scoped(); // error
如何访问该函数以防止发生错误?使用return关键字失败
您正在做的是或多或少说“我将钥匙锁在了车上。如何使用钥匙。”你不能您以一种无法检索它们的方式将它们锁定(好吧,除非您打碎了窗户,但我明白了)。如果您可以简单地打开门来获取钥匙,那将毫无意义地锁住汽车。
该“作用域”功能是锁定在汽车中的键。
您想做的是在该匿名函数之外(实际上在它之前)声明“作用域”。现在,您可以在anon函数内部和外部调用它。
您可以:
让范围;
...在匿名函数中...
{范围= {...某些功能};}
或
const scope = {某些功能}
...在匿名函数中
scope();
无论哪种方式,在anon函数之外,您现在都可以调用“ scope()”。
根据您的灵活程度,您可以这样做:
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 :)