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);
    }
    

      

     

     

      

      

  • 相关阅读:
    Scala编程基础
    大数据学习环境搭建(CentOS6.9+Hadoop2.7.3+Hive1.2.1+Hbase1.3.1+Spark2.1.1)
    hadoop2.7.3编译,支持snappy、bzip2本地压缩
    ABAP非Unicode系统中字符串拼接(CONCATENATE)时吃字符问题
    Hadoop学习笔记
    HIVE开发总结
    中文字符截取乱码问题
    替换空字符NULL(字符编码为0的字符)
    Generate Time Data(普通日期主数据)
    Generate Time Data(财务日期主数据)
  • 原文地址:https://www.cnblogs.com/yangxue72/p/7794322.html