我正在学习 JS,想知道有没有一种方法可以返回函数 bar() 或 buz() 而不返回 foo()?例如,如果我想返回函数 bar();得到2,我可以这样做吗?会是类似 foo().bar(); 的东西吗? ?
// Nested Scopes
function foo() { // can only access itself
var a = 1;
function bar() { // access to foo(), not buz()
var b = 2;
function buz() { // access to bar() and foo()
var c = 3;
console.log(a, b, c); // 1, 2, 3
}
buz();
console.log(a, b); // 1, 2
}
bar();
console.log(a); // 1
}
foo(); // 1
最佳答案
当然。您可以在每个阶段返回一个包含该函数的对象,也可以返回该函数本身。这利用了所谓的 closure .
function foo() {
var a = 1;
function bar() {
var b = 2;
function buz() {
var c = 3;
console.log(a, b, c);
}
console.log(a, b);
return { buz: buz };
}
console.log(a);
return { bar: bar };
}
foo().bar().buz();
关于javascript - 在 JavaScript 中调用嵌套作用域中的内部函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42289261/