10.闭包的作用.html 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243
  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. </head>
  9. <body>
  10. <!--
  11. 1、使用函数内部的变量在函数执行完后,仍然存活在内存中(延长了局部变量的生命周期)
  12. 2、让函数外部可以操作(读写)到函数内部的数据(变量/函数)
  13. 问题:
  14. 1、函数执行完后,函数内部声明的局部变量是否还存在?
  15. *一般是不存在的,存在于闭包中的变量才可能存在
  16. 2、在函数外部能直接访问函数内部的局部变量吗?
  17. *不能,但是我们可以通过闭包让外部操作它
  18. -->
  19. <script>
  20. function fn1() {
  21. var a = 2
  22. function fn2() {
  23. a++
  24. console.log(a)
  25. }
  26. function fn3(){
  27. a--
  28. console.log(a)
  29. }
  30. return fn3
  31. }
  32. var f = fn1()
  33. f() //1
  34. f() //0
  35. </script>
  36. </body>
  37. </html>