访问Javascript嵌套函数

时间:2014-03-04 09:33:43

标签: javascript html

我有以下Javascript。我将另一个函数嵌套到main函数中。我尝试显示main函数,以便执行每个嵌套函数,但它不能

        <!DOCTYPE HTML PUBLIC>

    <html>
    <head>
    <META http-equiv="Content-Type" content="text/html; charset=utf-8">
    <title>5 Multiplication Table</title>



    </head>
    <body>

    <script>


    function myFunction()
    {
        function operandFirst(){
            var x ="";
            for (var i=0;i<10;i++)
             {
               var x = x + "The number is "+ i;
            }
            document.getElementById("display").innerHTML=x;
       }

    }


    </script>

    <body>
    <button onclick="myFunction()">Display</button>
    <p id="display"></p>

    </body>
    </html>

2 个答案:

答案 0 :(得分:1)

函数声明的作用域。您只能从定义它们的范围内访问它们。(JS范围在功能级别处理,这意味着您只能从operandFirst内部访问myFunction。)

您必须调用一个函数才能运行它。

调用myFunction不会导致operandFirst自动调用。你必须有一个调用它的声明。

function myFunction() {
    function operandFirst() {
        // snip
    }

    // Like this
    operandFirst();
}

答案 1 :(得分:1)

由于内部函数位于myFunction的范围内,因此您可以随时返回它,在window范围内获取对它的访问权限:

function myFunction()
{
    return function operandFirst(){
        var x ="";
        for (var i=0;i<10;i++)
         {
           var x = x + "The number is "+ i;
        }
        document.getElementById("display").innerHTML=x;
   }

}

并称之为

myFunction()();

或者更具可读性:

var operandFirst = myFunction();
operandFirst();

但是,看起来你可以在你的案例中更多地使用一个对象:

var myFunctions = {
    operandFirst: function(){
        var x ="";
        for (var i=0;i<10;i++)
        {
            var x = x + "The number is "+ i;
        }
        document.getElementById("display").innerHTML=x;
    }
};

myFunctions.operandFirst();