如何访问另一个函数内的函数

时间:2015-06-09 03:55:54

标签: javascript

如何在以下代码中从外部调用内部函数?

(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

    })();

2 个答案:

答案 0 :(得分:2)

通过尝试将funTwo定义为函数(funOne.funTwo())和对象(funOne.funTwo.funFour()),您遇到了funFour的范围问题。

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

  1. 让funTwo变得有趣,可以在更易于访问的级别访问(例如,通过funOne)。
  2. 玩得好两个在对象中返回funFour。您仍然需要添加括号以实际调用输出中的funTwo()
  3. 如何改变funTwo:

        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
    

答案 1 :(得分:0)

无法从外部访问功能funTwo 本地变量(var funFour)。如果你想在函数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

    })();