zoukankan      html  css  js  c++  java
  • 作用域

    1.作用域

    域:空间、范围、区域....

    作用:读、写

    JS解析器

    /*
    1.找一些东西:var 、function、参数
      a=未定义 所有变量,在正式运行代码之前,都提前赋了一个值:未定义
      fn1=function fn1(){alert(2);}
      所有的函数,在正式运行代码之前,都是整个函数块
      
      JS的预解析
      遇到重名的:只留一个
      变量和函数重名了,就只留下函数
    2.逐行解读代码
      表达式:= + * / % ++ -- !......
      
    */
    alert(a); //未定义
    var a=1;
    function fn1(){alert(2);}
    

      

    预解析实例

    alert(a);      //function a(){alert(4);}
    var a=1;
    alert(a);     //1
    function a(){alert(2);}
    alert(a);    //1
    var a = 3;
    alert(a);     //3
    function a(){alert(4);}
    alert(a);   //3
    
    a();//报错
    /*
    1.预解析:var function 参数 。。。
      a=function a(){alert(4);}
    */
    

    自上而下、由里向外(作用域链)

    var a=1;
    function fn1(){
        alert(a);   //未定义
        var a = 2;
    }
    fn1();
    alert(a);    //1
    
    
    /*1.预解析:
            a=underfind;
            fn1=function(){alert(a);var a=2;}
        2.逐行解读代码:
                表达式
                a=1;
                读到函数没有执行,再往下读遇到函数调用
                1)预解析
                a=未定义
                2)逐行解读代码:
        
    */
    
    
    
    
    var a=1;
    function fn1(var a){
        alert(a);   //未定义
        a = 2;
    }
    fn1();
    alert(a);    //2
    
    /*1.预解析:
            a=underfind;
            fn1=function(){alert(a);var a=2;}
        2.逐行解读代码:
                表达式
                a=1;
                读到函数没有执行,再往下读遇到函数调用
                1)预解析
                a=未定义
                2)逐行解读代码:
        
    */
    
    
    var a=1;
    function fn1(var a=1){
        alert(a);   //1
        a = 2;
    }
    fn1(a);
    alert(a);    //1
    
    /*1.预解析:
            a=underfind;
            fn1=function(){alert(a);var a=2;}
        2.逐行解读代码:
                表达式
                a=1;
                读到函数没有执行,再往下读遇到函数调用
                1)预解析
                a=未定义
                2)逐行解读代码:
        
    */

    想要获取函数内的值:

    //第一种方法
    var str="";
    function fn1(){
        var a='大鸡腿~';
        str=a;
    }
    fn1();
    alert(str);//大鸡腿~
    
    //第二种方法
    function fn2(){
      var a="11111111"; 
       fn3(a);   
    }
    
     fn2();
    function fn3(a){
      alert(a);
    }
    

      

     

     

      

      

  • 相关阅读:
    Spring Cloud Stream 使用延迟消息实现定时任务(RabbitMQ)
    rocketmq发送消息的三种方式
    windows下RocketMQ安装部署
    idea多设备自动同步配置
    idea复制springboot的maven项目后,修改了maven名称,但maven工具里的maven名称没改变,不生效
    SpringBoot图文教程16—SpringBoot 多模块开发「web」「打包」
    spring-boot-starter-parent的作用
    JDK8 从永久代到元空间
    Spring 生命周期
    mesos Failed to connect to
  • 原文地址:https://www.cnblogs.com/yangxue72/p/7794322.html
Copyright © 2011-2022 走看看