JavaScript函数作用域 ,函数原理的浅入深出,及程序执行预编译之通天编译???

JavaScript中函数作用域之精辟,函数原理的浅入深出,及程序执行预编译之通天编译???
版权声明:本文为CSDN博主「NanQiao1716」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NanQiao1716/article/details/104629921
1.程序执行的前一刻会先将代码预编译一遍,如果有语法错误则直接终止程序运行

//预编译之通天编译 --> 在执行的前一刻,会把文件通天扫描一遍

/**

//预编译 函数整体提升(即函数会放到程序最顶端) 变量提升 (即 var a = 123 ; 难么会将a变量提升,则值是undefined)

未先声明变量就赋值的归全局所有 即Windows ,在程序执行则会创建一个Go{ } 对象 = Window{ }

1.先创建一个AO对象

2.再将函数形参和变量存入AO对象中,初始为undefined

3.在将相应参数值从执行顺序往AO对象中传值,后覆盖前

4.最后在执行程序,然后在AO对象中找

*/

console.log(b);//undefined
 var b = 234;
 function test(a){
   console.log(a)//fn
   console.log(b)//234
   var a = 123;
    console.log(a)//123
     function a(){}
      b = 123 ;
     console.log(b);//123
  }
console.log(b);//234
test(1);
console.log(b);//123
image

2.函数作用域之精辟及函数原理的浅入深出

这里我就拿个上面那个列子稍微改动一下

console.log(b);//undefined
        var b = 234 ;
        function test(a){
            console.log(a) //fna
            function a(){
                a = 123456 ;
                function c(){c = 789;}
            }
            console.log(b) //fnb
            var a = 123 ;
            console.log(a) ; //123
            b();
            function b(){
                console.log(b) ;//undefined
                c = 666 ;
                var b = 456 ;
                console.log(b) ;//456
            }
            console.log(c) ;//666
            c = 999 ;
            b = 123 ;
            console.log(b);//123
        }
    test(1);
    console.log(c); //999
    console.log(b); //234

i.这里我直接在终端运行了,如图所示

image

ii.在Chrome 浏览器运行程序的示意图

image

这里我在给出评论区了给出了几个案例,欢迎在评论区留下你的答案哦,我不会告诉你不可以直接速知答案的哦

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/NanQiao1716/article/details/104629921
————————————————
版权声明:本文为CSDN博主「NanQiao1716」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/NanQiao1716/article/details/104629921

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容