在外部函數之外直接調用內部函數:
代碼如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> 7 <script> 8 function outFunction(){ 9 console.log("外部函數被執行了"); 10 function innerFunction(){ 11 console.log("內部函數被執行了"); 12 } 13 } 14 $(function(){ 15 innerFunction(); 16 }) 17 </script> 18 </head> 19 <body> 20 </body> 21 </html>
運行結果:
報錯原因:
內部函數的作用域在外部函數內,所以,內部函數只能在外部函數內被調用。
在外部函數內調用內部函數:
代碼如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> 7 <script> 8 function outFunction(){ 9 console.log("外部函數被執行了"); 10 function innerFunction(){ 11 console.log("內部函數被執行了"); 12 } 13 innerFunction(); 14 } 15 $(function(){ 16 outFunction(); 17 }); 18 </script> 19 </head> 20 <body> 21 </body> 22 </html>
運作結果:
內部函數成功被調用。
在外部函數之外調用內部函數,把內部函數 賦值給一個全局變量
代碼如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> 7 <script> 8 //定義一個全局變量 9 var n; 10 function outFunction(){ 11 console.log("外部函數被執行了"); 12 function innerFunction(){ 13 console.log("內部函數被執行了"); 14 } 15 n = innerFunction;//把內部函數賦值給全局變量n 16 } 17 $(function(){ 18 outFunction(); 19 console.log("以下是全局變量調用內部方法:"); 20 n(); 21 }); 22 </script> 23 </head> 24 <body> 25 </body> 26 </html>
運行結果:
在這里,全局變量n相當於面向對象的委托,當把內部函數賦值給全局變量時,調用委托方法就會調用內部函數。
在外部函數之外調用內部函數,把內部函數賦值給一個變量:
代碼如下:
1 <!DOCTYPE html> 2 <html> 3 <head> 4 <meta charset="UTF-8"> 5 <title></title> 6 <script src="https://cdn.bootcss.com/jquery/1.10.2/jquery.min.js"></script> 7 <script> 8 9 // 在外部函數之外調用內部函數,把內部函數賦值給一個變量: 10 11 function outFunction(){ 12 console.log("外部函數被執行了"); 13 function innerFunction(){ 14 console.log("內部函數被執行了"); 15 } 16 return innerFunction; 17 } 18 $(function(){ 19 20 console.log("先把外部函數賦值給變量"); 21 var temp = outFunction(); 22 console.log("再執行外部函數變量"); 23 temp(); 24 25 }); 26 </script> 27 </head> 28 <body>
運行結果:
在這里,我們可以看到,內部函數不僅可以賦值給全局變量,還可以賦值給局部變量。