Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/heroku/2.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 - Fatal编程技术网

Javascript 如何访问另一个函数中的函数

Javascript 如何访问另一个函数中的函数,javascript,Javascript,在下面的代码中,如何从外部调用内部函数 (function (){ var funOne = { funTwo : function (){ var funFour = function(){ console.log('inner function working'); } }, funThree : function () { cons

在下面的代码中,如何从外部调用内部函数

(function (){
    var funOne = {
        funTwo : function (){
            var funFour = function(){
                console.log('inner function working');
            }
        },
        funThree : function () {
            console.log('working');
        }
    }
    funOne.funTwo(); // works
    funOne.funThree(); // works again
    funOne.funTwo.funFour(); // throwing exception

    })();

您在funFour中遇到了一个范围问题,试图将funTwo act定义为函数(
funOne.funTwo()
)和对象(
funOne.funTwo.funFour()

以下是访问funFour的两个选项:

  • 让funTwo在更易访问的级别(例如,通过funtone)访问funtfour
  • 在对象中使用funTwo返回funtfour。您仍然需要添加括号,以便在输出中实际调用
    funtwow()
  • 如何更改以下两项:

        funTwo : function (){
            var funFour = function(){
                console.log('inner function working');
            };
            funOne.funFour = funFour; // Option 1
            return { 'funFour': funFour }; // Option 2
        },
    
    如何调用每个选项:

    funOne.funFour(); // Option 1
    funOne.funTwo().funFour(); // Option 2
    

    无法从外部访问函数funTwo局部变量(var funtfour)。如果要在funTwo函数外部使用funFour,则需要将funFour声明为全局变量

    编辑的代码在这里

    (function (){
        var funFour;
        var funOne = {
            funTwo : function (){
                funFour = function(){
                    console.log('inner function working');
                }
            },
            funThree : function () {
                console.log('working');
            }
        }
        funOne.funTwo(); // works
        funOne.funThree(); // works again
        funFour(); // Call function funFour here
    
        })();
    

    你应该给funOne起一个不同的名字-它不是一个函数。选项2运行良好。但是,我无法运行选项1。