Javascript函数&;嵌套函数
目的:我需要调用主函数中的子函数 函数声明:Javascript函数&;嵌套函数,javascript,function,scope,Javascript,Function,Scope,目的:我需要调用主函数中的子函数 函数声明: var MainFunction = function () { function NestedFunc1(){ console.warn("NestedFunc1"); }; function NestedFunc2(){ console.warn("NestedFunc2"); }; } 函数调用: var MainFunction = function () { functio
var MainFunction = function () {
function NestedFunc1(){
console.warn("NestedFunc1");
};
function NestedFunc2(){
console.warn("NestedFunc2");
};
}
函数调用:
var MainFunction = function () {
function NestedFunc1(){
console.warn("NestedFunc1");
};
function NestedFunc2(){
console.warn("NestedFunc2");
};
}
main function.NestedFunc1()
main function.NestedFunc2()
- 我做错了什么
10倍 您可以通过一个属性将其公开
function MainFunction () {
this.nestedFunc1 = function(){
console.warn("NestedFunc1");
};
this.nestedFunc2 = function(){
console.warn("NestedFunc2");
};
}
现在您可以通过执行以下操作在外部调用此函数
var malObj = new MainFunction();
malObj.nestedFunc1();
但是,如果您仍然想像调用MainFunction.NestedFunc1()
那样调用它,那么就让它
var MainFunction = {
NestedFunc1:function (){
console.warn("NestedFunc1");
},
NestedFunc2:function (){
console.warn("NestedFunc2");
}
}
问题是这两个函数都在一个函数范围内被隔离。将它们视为私人功能 一种(多种)解决方案是将MainFunction定义为具有某些函数作为属性的普通ol对象:
var MainFunction = {
NestedFunction1: function () { .. },
NestedFunction2: function () { .. }
};
请注意,由于我们定义函数的方式,需要用逗号分隔函数。那你就打电话吧
MainFunction.NestedFunction1();
还请注意,只要您不希望在该对象中有其他“私有”函数,这种模式就可以了 我做错了什么?几乎所有的事情,你都对嵌套函数和对象属性之间的区别感到困惑。我需要调用主函数中的子函数。但那不是你当时正在做的;您正在尝试调用主函数上的属性。顺便问一下,您是想让main函数
自己做点什么,还是仅仅作为一种容器?函数不以分号结尾;如果你把一个放在那里,它只会创建一个空语句;