JavaScript 执行引擎小记

看到一篇博文中写到了关于JS执行引擎的东西,特来做一下测试并记录一下JS 在代码执行过程中碰到的问题。

1、两个函数名相同的定义式函数

        function myfunc(){
            alert("1");
        }

        myfunc(); //弹出 2

        function myfunc(){
            alert("2");
        }

        myfunc(); //弹出 2

因为JS在执行代码的过程中【并非一行一行地分析和执行代码,而是一段一段分析执行的。而且,在同一段程序的分析执行中,定义式的函数语句会被提取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。】

所以,按照先执行了两个 定义式函数语句 , 于是只有最后一个 myfunc() 函数是生效的,结果为: 2 、2 。

2、顺序不同的变量式函数与定义式函数

        var myfunc = function(){
            alert("1");
        }

        // function myfunc(){
        //     alert("1");
        // }

        myfunc(); //弹出 1

        function myfunc(){
            alert("2");
        }

        myfunc(); //弹出 1

先执行 后一个 myfunc() 函数,再按照代码顺利执行定义式 myfunc 函数,于是结果均为第一个函数的内容:1、1  。

        function myfunc(){
            alert("1");
        }

        myfunc(); // 1

        var myfunc = function(){
            alert("2"); 
        }

        myfunc(); // 2

同理,这个的结果为:1、2 。

3、变量式函数

        var myfunc = function(){
            alert("1");
        }

        // function myfunc(){
        //     alert("1");
        // }

        myfunc(); //弹出 1

        myfunc = function(){
            alert("2");
        }

        myfunc(); // 弹出 2

按顺序执行,后一个myfunc 被重新赋值,于是结果为:1、2 。

原文地址:https://www.cnblogs.com/stonewong/p/3491824.html