js模仿块级作用域(js没有块级作用域私有作用域)

一、总结

1、js没有块级作用域在for循环中定义的i,出了for循环还是有这个i变量

2、js可以模拟块级作用域用立即执行的匿名函数:(匿名函数)():这里是匿名函数中的循环:而匿名函数的作用将所在函数(匿名函数做在的函数)的局部变量常驻内存

3、区别块级作用域(私有作用域:循环),局部变量(函数),全局变量不是说js没有局部变量,局部变量是对函数而言,块级作用域是对循环(比如for循环)而言

 

 

二、js模仿块级作用域(js没有块级作用域,js没有私有作用域)

模仿块级作用域

块级作用域又叫私有作用域,但是JS没有块级作用域的概念;这意味着在块语句(比如for语句)中定义的变量,不会因为离开了for块就失效

  • 使用了块级作用域后,匿名函数中定义的任何变量,都会在执行结束时被销毁;
  • 一般来说,我们都应该尽可能少向全局作用域中添加变量和函数;过多的全局变量和函数很容易导致命名冲突
  • 使用块级作用域,每个开发者既可以使用自己的变量,又不必担心搞乱全局作用域;
  • 在全局作用域中使用块级作用域可以减少闭包占用的内存问题.

 

三、代码



1 <!DOCTYPE html>
2 <html lang="zh-cn">
3 <head>
4 <meta charset="utf-8">
5 <title>课堂演示</title>
6 </head>
7 <body>
8 <script>
9 /*
10 function myfun() {
11
12 for(var i=0;i<5;i++){
13
14 } //i不会因为离开了for块就失效;
15
16 var i; //重新声明后i还是5,
17
18 alert(i) //此时的i=5
19 }
20 */
21
22 //模仿块级作用域
23 function myfun() {
24
25 (function(){
26 for(var i=0;i<5;i++){
27 alert(i)
28 }
29 })() // 这里定义并立即调用了一个匿名函数;
30
31
32 alert(i)
33 //此时的i已结不存在 会报错:'i is not defined'
34 }
35 myfun()
36 </script>
37 </body>
38 </html>


 


我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: ​​fanrenyi.com​​;有各种前端、后端、算法、大数据、人工智能等课程。

​版权申明:欢迎转载,但请注明出处​

一些博文中有一些参考内容因时间久远找不到来源了没有注明,如果侵权请联系我删除。