我目前正在尝试学习javascript,我想要实现的是从主函数外部调用函数。为了更好的主意,我留下了我目前正在进行的代码。我将非常感激如果有人能向我解释为什么这个功能无法正常工作。先感谢您。
function One_Main(){
function Alpha(){
console.log("Alpha");
}
}
One_Main();
function Two_Main(){
Alpha();
}
Two_Main();
答案 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。
答案 2 :(得分:1)
我不知道你在学什么教程,也许你正在阅读currying
方法,如果是这样,你可以做:
function One_Main(){
function Alpha(){
console.log("Alpha");
}
return Alpha;
}
One_Main();
function Two_Main(){
One_Main()();
}
Two_Main();

答案 3 :(得分:1)
它不起作用,因为Alpha
在One_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();

class One_Main {
constructor() {}
static Alpha() {
console.log("Alpha");
}
}
// Make it visible
Alpha = One_Main.Alpha;
function Two_Main() {
Alpha();
}
Two_Main();

function One_Main() {}
One_Main.Alpha = function() {
console.log("Alpha");
}
// Make it visible
Alpha = One_Main.Alpha;
function Two_Main() {
Alpha();
}
Two_Main();