如何在不调用父函数的情况下调用子函数

时间:2020-05-26 15:56:16

标签: javascript

我用javascript进行了一次采访。采访者在解释“关闭”的概念时问我以下问题。实际上需要在外部调用子方法而不调用父方法。可能吗?我无法理解这个问题的意图。有人让我知道if

function parent(){ 
    console.log("you called parent function")
    function  child(){
      console.log("child");
    }
}

2 个答案:

答案 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中没有语法可以从函数外部直接访问函数本地的变量。