zoukankan      html  css  js  c++  java
  • 函数作用域和块级作用域

    ------------>函数作用域:

            顾名思意也就是在创建函数的时候附加的一个作用域    

    function foo(){
       var b=2;  
    }
    console.log(b);//ReferenceError

             从上面的代码我们就可以确认在创建函数foo()的时候,我们创建了一个函数作用域,因为在外面找不到这个变量!!!

    ------------>嵌套的函数作用域

            依旧是一个作用域中套着一个作用域

    function foo(a){
     
        function dar(){
            console.log(b);//13
        }
        var b=10;   
    dar();
    } foo(3);

            这个例子也说明了作用域是一层一层向上遍历标识符的

    ------------>函数表达式/函数声明

            我们来看一下他们的定义

               函数声明:function是声明中的第一个词

               函数表达式:function不是什么中的第一个词

            我们来看一下例子

    var d=function(){}//函数表达式
    function foo(){}//函数声明

    ------------>块级作用域{}

            首先我们来看一个"寻常的例子"

    for(var i=0;i<10;i++){
    console.log(i);
    }
    console.log(i);//10

              在这里我们可以看到变量已经被泄露到了全局作用域中

            那我们这么样可以避免这样的污染?!看下面的例子

    for(let i=0;i<10;i++){
    console.log(i);
    }
    console.log(i);//ReferenceError

              在这里我们使用了一个关键字let,作用是让变量绑定到这个作用域,上面的代码同下

    {
      let i;  
      for(i=0;i<10;i++){
            let j=i;
           console.log(j);        
        }  
    }    

          当然还可以这样

    {    
        for(var i=0;i<10;i++){
            console.log(i);
        }
    }
    console.log(i);//ReferenceError

          还可以这样

    (function foo(){
       for(var i=0;i<10;i++){
           console.log(i);  
        }      
    })();//在后面加了一个括号,表示立即执行这个函数表达式

    --------------->const

                         这个关键字就是标明这个标识符是常量的意思

     const b=function foo(a){
        console.log(a);
     };
        b(33);
        (b=function(d){console.log(d);})(44);//TypeError

            这个也说明了const可以放在任何地方

    Hold on, everything is possible.
  • 相关阅读:
    atoi (String to Integer) leetcode
    按层逆遍历一棵树,使用满二叉树存储
    unix网络编程-配置unp.h头文件
    ListView系列(七)——Adapter内的onItemClick监听器四个arg参数
    Windows系统下安装VirtualBox,系统找不到指定路径的做法
    Android Fragment完全解析,关于碎片你所需知道的一切
    【Android开源框架列表】
    fragment报错
    2013 年开源中国 10 大热门 Java 开源项目
    【移动开发】Android中三种超实用的滑屏方式汇总(ViewPager、ViewFlipper、ViewFlow)
  • 原文地址:https://www.cnblogs.com/student-note/p/6632301.html
Copyright © 2011-2022 走看看