如何从主函数外部调用函数?

时间:2017-06-11 22:39:53

标签: javascript function

我目前正在尝试学习javascript,我想要实现的是从主函数外部调用函数。为了更好的主意,我留下了我目前正在进行的代码。我将非常感激如果有人能向我解释为什么这个功能无法正常工作。先感谢您。

function One_Main(){
    function Alpha(){
        console.log("Alpha");
    }
}
One_Main(); 



function Two_Main(){
    Alpha();
}
Two_Main();

4 个答案:

答案 0 :(得分:2)

Alpha()属于One_Main的范围,您无法从全局范围中看到它。要从One_Main外部调用Alpha(),您需要在该函数之外声明它。

function Alpha(){
    console.log("Alpha");
}

function One_Main(){
    Alpha();
}
One_Main(); 



function Two_Main(){
    Alpha();
}
Two_Main();

答案 1 :(得分:1)

您可能希望阅读有关javascript中的作用域以了解问题。 https://scotch.io/tutorials/understanding-scope-in-javascript

Alpha函数

中无法看到函数Two_Main

PS:调试有助于了解有关错误的更多信息。在Chrome中,您可以右键单击并选择Inspect element并查看控制台以调试javascript。

结帐https://raygun.com/blog/debug-javascript/了解更多信息

答案 2 :(得分:1)

我不知道你在学什么教程,也许你正在阅读currying方法,如果是这样,你可以做:



function One_Main(){
    function Alpha(){
        console.log("Alpha");
    }
    return Alpha;
}
One_Main(); 

function Two_Main(){
    One_Main()();
}
Two_Main();




答案 3 :(得分:1)

它不起作用,因为AlphaOne_Main之外不可见。

要使其可见,您可以将One_Main定义为对象,然后将Alpha设为One_Main的属性。

要修复代码,请执行以下操作:



function One_Main() {
  this.Alpha = function() {
    console.log("Alpha");
  }
}

// Make it visible
Alpha = new One_Main().Alpha;

function Two_Main() {
  Alpha();
}
Two_Main();




ES2015风格



class One_Main {
    constructor() {}
    static Alpha() {
        console.log("Alpha");
    }
}

// Make it visible
Alpha = One_Main.Alpha;

function Two_Main() {
    Alpha();
}

Two_Main();




作为纯JS的简单属性



function One_Main() {}

One_Main.Alpha = function() {
  console.log("Alpha");
}

// Make it visible
Alpha = One_Main.Alpha;

function Two_Main() {
  Alpha();
}

Two_Main();