zoukankan      html  css  js  c++  java
  • JS基础_函数作用域

      1 <!DOCTYPE html>
      2 <html>
      3     <head>
      4         <meta charset="UTF-8">
      5         <title></title>
      6         <script type="text/javascript">
      7             
      8             /*
      9              * 函数作用域    
     10              *     
     11              *  - 调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
     12              *     
     13              *  - 每调用一次函数就会创建一个新的函数作用域,他们之间是互相独立的
     14              *     
     15              *  - 在函数作用域中可以访问到全局作用域的变量
     16              *         在全局作用域中无法访问到函数作用域的变量
     17              *     
     18              *  - 当在函数作用域操作一个变量时,它会先在自身作用域中寻找,如果有就直接使用
     19              *         如果没有则向上一级作用域中寻找,直到找到全局作用域,
     20              *         如果全局作用域中依然没有找到,则会报错ReferenceError
     21              *     
     22              *  - 在函数中要访问全局变量可以使用window对象
     23              */
     24             
     25             //创建一个变量
     26             var a = 10;
     27             
     28             function fun(){
     29                 
     30                 var a = "我是fun函数中的变量a";
     31                 var b = 20;
     32                 
     33                 console.log("a = "+a); //a = 我是fun函数中的变量a
     34                 
     35                 function fun2(){
     36                     console.log("a = "+a);//a = 我是fun函数中的变量a
     37                     //不加window就是就近原则,加就是全局的
     38                     console.log("a = "+window.a);//a = 10
     39                 }
     40                 
     41                 fun2();
     42                  
     43             }
     44             
     45             fun();
     46             console.log("a = "+a);//a = 10
     47             //在全局作用域中无法访问到函数作用域的变量
     48             //console.log("b = "+b);//Uncaught ReferenceError: b is not defined
     49             
     50             
     51             //--------------------------------------------------------------------------------
     52             
     53             
     54             /*
     55              * 在函数作用域也有声明提前的特性,
     56              *     使用var关键字声明的变量,会在函数中所有的代码执行之前被声明
     57              *     函数声明也会在函数中所有的代码执行之前执行
     58              */
     59             
     60             function fun3(){ 
     61                 
     62                 fun4();
     63                 
     64                 console.log(a);//undefined
     65                 
     66                 var a = 35;
     67                 
     68                 function fun4(){ 
     69                     alert("I'm fun4");
     70                 }
     71                 
     72             }
     73             
     74             fun3(); 
     75             
     76             
     77             //--------------------------------------------------------------------------------
     78             
     79             
     80             var c = 33;
     81             
     82             /*
     83              * 在函数中,不使用var声明的变量都会成为全局变量
     84              */
     85             function fun5(){
     86                 
     87                 console.log("c = "+c);//c = 33
     88                 c = 10;
     89                 
     90                 //d没有使用var关键字,则会设置为全局变量
     91                 d = 100;
     92             }
     93             
     94             fun5();
     95             
     96             //在全局输出c
     97             console.log("d = "+d);//d = 100
     98             
     99             
    100             //--------------------------------------------------------------------------------
    101             
    102             
    103             var e = 23;
    104             
    105             /*
    106              * 定义形参就相当于在函数作用域中声明了变量
    107              */
    108             function fun6(e){
    109                 console.log("e = "+e); //e = undefined,相当于在函数作用域里面声明了一个变量var e;
    110             }
    111             
    112             fun6();
    113             
    114             
    115             
    116         </script>
    117     </head>
    118     <body>
    119     </body>
    120 </html>
  • 相关阅读:
    linux内核的若干问题
    shell(四)--turboastat
    Mac系统维护
    花卉养殖(1) 黄叶
    你就是佛(1)- 本体、开悟与思想
    linux 工具(2)----- crontab定时任务管理
    vim (四) 使用技巧
    linux kernel __init和__exit宏的作用
    优秀的网站
    Mac OSX 快捷键&命令行
  • 原文地址:https://www.cnblogs.com/ZHOUVIP/p/7694923.html
Copyright © 2011-2022 走看看