Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript函数&;嵌套函数_Javascript_Function_Scope - Fatal编程技术网

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函数
自己做点什么,还是仅仅作为一种容器?函数不以分号结尾;如果你把一个放在那里,它只会创建一个空语句;