繁体   English   中英

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

[英]How to call a function from outside the main function?

我目前正在尝试学习javascript,我想实现的目标是从main函数外部调用一个函数。 为了更好的主意,我保留了当前正在执行的代码。 如果有人可以向我解释为什么此功能不能正常工作,我将非常感激。 先感谢您。

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

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

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

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



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

您可能需要阅读有关javascript范围界定的信息,以了解问题所在。 https://scotch.io/tutorials/understanding-scope-in​​-javascript

Alpha函数在Two_Main函数内部不可见

PS:调试对于了解有关该错误的更多信息很有用。 在Chrome中,您可以右键单击并选择检查元素,然后在控制台上调试JavaScript。

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

我不知道您正在学习什么教程,也许您正在阅读有关currying方法的信息,如果是这样,您可以进行以下操作:

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

它不起作用,因为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(); 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM