2014-03-04 66 views
-1

我有以下Javascript。我将另一个函数嵌套到主函数中。我试图显示主功能,从而也执行每一个嵌套函数,但它不能正在访问Javascript嵌套函数

 <!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> 
+0

你到底希望发生? –

回答

1

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

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

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

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

    // Like this 
    operandFirst(); 
} 
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();