2_闭包.html 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. <!DOCTYPE html>
  2. <html lang="en">
  3. <head>
  4. <meta charset="UTF-8">
  5. <meta name="viewport" content="width=device-width, initial-scale=1.0">
  6. <title>Document</title>
  7. </head>
  8. <body>
  9. <script>
  10. // 闭包 函数嵌套函数 内部函数可以使用外部函数的变量
  11. // 闭包的作用 保护变量不被销毁
  12. function foo(){
  13. var a = 10;
  14. function seta(num){
  15. a += num;
  16. return a;
  17. }
  18. return seta
  19. }
  20. // console.log(foo());
  21. var foo2 = foo();
  22. console.log(foo2);
  23. var num1 = foo2(1);
  24. console.log(num1);
  25. var num2 = foo2(2);
  26. console.log(num2);
  27. // 每个函数调用都是一个新的作用域 每一个作用域下的闭包内部变量不互通
  28. var foo3 = foo();
  29. var num3 = foo3(3);
  30. console.log(num3);
  31. // function foo10(){
  32. // var a = 10;
  33. // console.log(a);
  34. // }
  35. // foo10();
  36. // foo10();
  37. </script>
  38. </body>
  39. </html>