zoukankan      html  css  js  c++  java
  • js 内存进阶 function扫描解析

    <!DOCTYPE html>
    <html>
    <head>
      <title></title>
    </head>
    <body>
      <script type="text/javascript">
        //情况1
        var fn = function(){ //在栈中,匿名函数,赋值给变量
          alert(1);
        };
        function fn(){ //在堆中 有名字的函数
          alert(2);
        }
        fn(); // 1
        //调用函数的时候先去栈中找有没有定义fn的变量,如果有就根据变量存储的内存地址来执行这个函数
        //先定义后执行


        //情况2
        /*

        var fn1 = 3;
        function fn1(){
          alert(4);
        }
        fn1(); //fn1 not a function
        */

        //情况3
        var fn2; //已定义未赋值的变量为undefined
        function fn2(){
          alert(5);
        }
        fn2(); //5
        //如果fn变量,没有存储内存地址则为undefined,那么就去堆中看看有没有fn的引用名称

        //情况4
        fn3();   //6     //3.调用fn3
        var fn3;    //1.先定义fn3   //4.undefined,去堆中找
        function fn3(){    //2.再定义函数fn3()    //执行 结果为6
          alert(6);
        }


        //情况5
        fn4();    //8    //3.调用fn4()
        var fn4 = 7;   //1.定义变量fn4  //4.赋值
        function fn4(){    //2.定义函数fn4()
          alert(8);
        }

        //情况6
        var fn5;  //1.定义fn5    //3.未赋值  undefined
        fn5();   //9   //调用执行fn5(),发现fn5未赋值,直接去堆中找fn5()
        function fn5(){  2.定义函数fn5()
          alert(9);
        }

        //情况7
        var fn6 = 10;  //1.先定义fn6     //3.将10赋值给fn6
        fn6();   //fn6 not a function  //4.调用执行fn6(),fn6  not a function
        function fn6(){  //定义函数fn6()
          alert(11);
        }
      </script>
    </body>
    </html>

  • 相关阅读:
    centos crash debug
    go get Unknown SSL protocol error in connection to gopkg.in
    Tensorflow serving with Kubernetes
    Spring 集成 Swagger UI
    Docker Registry V2 Garbage Collection
    Docker Registry V2 with Nginx
    Zabbix磁盘性能监控
    Zabbix CPU utilization监控参数
    Windows挂载Gluster复制卷
    Redis持久化存储(三)
  • 原文地址:https://www.cnblogs.com/52fe/p/7826378.html
Copyright © 2011-2022 走看看