zoukankan      html  css  js  c++  java
  • 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 。

  • 相关阅读:
    摄影/中秋美食
    摄影/不是花中偏爱菊
    基础知识(3)- Java的基本程序设计结构
    8、分页
    洛谷——P2440 木材加工
    洛谷——P1258 小车问题
    洛谷——P1832 A+B Problem(再升级)
    洛谷——P1802 5倍经验日
    洛谷—— P1803 凌乱的yyy
    网络基础之网络协议
  • 原文地址:https://www.cnblogs.com/stonewong/p/3491824.html
Copyright © 2011-2022 走看看