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 。

  • 相关阅读:
    测试随笔
    ECNU 3530 和你在一起
    ECNU 1030 母牛生小牛
    ECNU 3081 购房还款
    PPP模式下的融资结构优化
    决策树分类
    关联规则-R语言实现
    中国快递包裹总量的预测-基于SARIMA模型
    LeetCode 2 :Swap Nodes in Pairs
    2018092609-2 选题 Scrum立会报告+燃尽图 04
  • 原文地址:https://www.cnblogs.com/stonewong/p/3491824.html
Copyright © 2011-2022 走看看