博客列表 >JavaScript 之 作用域和闭包,类的继承

JavaScript 之 作用域和闭包,类的继承

Blastix Riotz
Blastix Riotz原创
2021年04月08日 18:31:15637浏览
  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>作用域和闭包</title>
  8. </head>
  9. <body>
  10. <script>
  11. //作用域:全局,函数,块
  12. //1. 全局作用域,默认的,不可删除
  13. // let site = "php";
  14. console.log(site);
  15. //由全局对象调用
  16. //全局对象:如果在浏览器中运行js,那么全局对象就是window
  17. console.log(window.site);
  18. //2.函数作用域
  19. function getSite(){
  20. //site是声明在函数外部的全局变量
  21. //在函数内部可以访问到外部的全局变量
  22. // let site = "京东";
  23. //私有成员,仅在当前作用内访问,外部不可见
  24. let domain = "php.cn"
  25. return site
  26. }
  27. console.log(getSite());
  28. // console.log(domain);
  29. // 3.块作用域
  30. {
  31. let a = 1;
  32. const B = "Hello";
  33. //var不支持块作用域,声明的变量会泄露到函数外
  34. var a = 1;
  35. var B = "Hello";
  36. }
  37. console.log(a, B);
  38. //4.闭包
  39. let c = 100;
  40. function sum(a,b){
  41. // return a+b;
  42. // 现在已经产生了闭包
  43. // 函数中的变量来源有两种类型
  44. // 1.形参:a,b,这是函数自有的
  45. // 2.自由变量:c,c并不是这个函数自有的
  46. // 当前函数可以访问到上一级/外部的自由变量
  47. //闭包:能够访问自由变量的函数就是闭包
  48. //理论上来讲,所有函数都是闭包
  49. return a+ b+ c;
  50. }
  51. console.log(sum(4,5));
  52. //通过闭包来访问内部的私有变量
  53. function demo1(){
  54. //室友变量
  55. let email = "qq.com";
  56. function d(){
  57. //对于这个子函数,email就是他的自由变量
  58. return email;
  59. }
  60. }
  61. let f = demo1();
  62. console.log(f())
  63. </script>
  64. </body>
  65. </html>
声明:本文内容转载自脚本之家,由网友自发贡献,版权归原作者所有,如您发现涉嫌抄袭侵权,请联系admin@php.cn 核实处理。
全部评论
文明上网理性发言,请遵守新闻评论服务协议