我用javascript进行了一次采访。采访者在解释“关闭”的概念时问我以下问题。实际上需要在外部调用子方法而不调用父方法。可能吗?我无法理解这个问题的意图。有人让我知道if
function parent(){
console.log("you called parent function")
function child(){
console.log("child");
}
}
答案 0 :(得分:3)
没有 ever 调用child
函数就不可能调用parent
函数,不是;在/除非调用child
函数,否则parent
函数不存在。 (还要注意,每次调用它都会创建一个 different child
函数。)
但是,如果您修改parent
使其返回它创建的child
函数...
function parent(){
console.log("");
return function child(){
// ^^^^^^
console.log("child");
};
}
...您可以拨打一次parent
,然后根据需要随意拨打child
:
const c = parent(); // "you called parent function"
c(); // "child"
c(); // "child"
c(); // "child"
答案 1 :(得分:0)
不,这不可能。
child
名称的范围仅是parent
函数。从外部获得对child
函数的引用的唯一方法是调用parent()
并使其返回该函数,例如
function parent(){
console.log("you called parent function")
function child(){
console.log("child");
}
return child;
}
var c = parent();
c();
JavaScript中没有语法可以从函数外部直接访问函数本地的变量。