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


    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>
  • 相关阅读:
    数据分析 ---上篇
    爬虫 ---模拟登录
    Spider -- 获取图片并处理中文乱码
    爬虫篇 ---增量式爬虫
    Django中间件深入理解
    认识casbin
    关于nginx开机自己启动配置
    更改redhat yum源
    sqlalchemy监听事件
    Linux命令 history
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/9029273.html
Copyright © 2020-2023  润新知