在外部函数外调用内部函数

在外部函数之外直接调用内部函数:

代码如下:

 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>

运行结果:

在这里,我们可以看到,内部函数不仅可以赋值给全局变量,还可以赋值给局部变量。

 

原文地址:https://www.cnblogs.com/ChenMM/p/9412202.html