12.函数作用域.html 3.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta http-equiv="X-UA-Compatible" content="IE=edge">
  6. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  7. <title>Document</title>
  8. <script>
  9. /*
  10. 函数作用域
  11. -调用函数时创建函数作用域,函数执行完毕以后,函数作用域销毁
  12. -每调用一次函数就会创建一个新的函数作用域,他们之间是相互独立的
  13. -在函数作用域中,可以访问到全局作用域的变量
  14. 在全局作用域中无法访问到函数作用域的变量
  15. -当在函数作用域中操作一个变量时,它会先在自身的作用域中寻找,
  16. 如果有就直接使用,如果没有则向上一级作用域中寻找,直到找到全局作用域
  17. 如果全局作用域中依然没有找到,则会报错
  18. -在函数中要访问全局变量可以使用window对象
  19. */
  20. //创建一个变量
  21. // var a = 10;
  22. // function fun(){
  23. // var a = "函数中的变量a";
  24. // var b = 20;
  25. // console.log("a="+a);
  26. // }
  27. // fun();
  28. // // console.log("b="+b);//报错
  29. // console.log("a="+a);
  30. // var a = 10;
  31. // function fun(){
  32. // // var a = "fun函数中的变量a";
  33. // var b = 20;
  34. // // console.log("a="+a);
  35. // function fun2(){
  36. // console.log('a='+window.a);//访问全局变量a
  37. // }
  38. // fun2();
  39. // }
  40. // fun();
  41. // console.log("b="+b);//报错
  42. // console.log("a="+a);
  43. /*
  44. 在函数作用域中也有声明提前的特性
  45. 使用var关键字声明的变量,会在函数中所有的代码执行之前被声明
  46. 函数声明也会在函数中的所有代码执行之前执行
  47. */
  48. // function fun3(){
  49. // fun4();
  50. // console.log(a);
  51. // var a = 35;
  52. // function fun4(){
  53. // alert("fun4函数");
  54. // }
  55. // }
  56. // fun3();
  57. // var c = 33;
  58. // function fun5(){
  59. // console.log("c="+c);//输出结果为c=undefined
  60. // var c = 10;
  61. // }
  62. // fun5();
  63. // var c = 33;
  64. // function fun6(){
  65. // console.log("c="+c);//输出结果为c=33
  66. // c = 10;
  67. // }
  68. // fun6();
  69. /*
  70. 在函数中,不使用var声明的变量都会成为全局变量
  71. */
  72. // var c = 33;
  73. // function fun7(){
  74. // console.log("函数中的c="+c);//输出结果为c=33
  75. // c = 10;
  76. // //d没有使用var关键字,则会设置为全局变量
  77. // d=100; //相当于window.d = 100;
  78. // }
  79. // fun7();
  80. // //在全局输出c
  81. // console.log("c="+c);//c=10
  82. // console.log("d="+d);
  83. // var e = 23;
  84. // /*
  85. // 定义形参就相当于在函数作用域中声明了变量
  86. // */
  87. // function fun8(e){
  88. // alert(e);
  89. // }
  90. // fun8();
  91. </script>
  92. </head>
  93. <body>
  94. </body>
  95. </html>