浅析js解析顺序

来源:互联网 发布:如何登录手机淘宝账号 编辑:程序博客网 时间:2024/06/06 01:35

==========================================先看第一部分比较======================================

 

  1. <SCRIPT LANGUAGE="JavaScript">
  2. <!--
  3.     /***************************
  4.      *
  5.      *      JS的解释顺序
  6.      *
  7.      ***************************/
  8.      //首先看第一段代码
  9.      var myfunc = function(){
  10.         alert("hello");
  11.      };
  12.      myfunc();// 第一次调用myfunc,输出hello
  13.      myfunc = function(){    
  14.         alert("yeah");
  15.      };
  16.      myfunc();// 第二次调用myfunc,输出yeah
  17. //-->
  18. </SCRIPT>

 

==========================================再看第二部分比较======================================

  1. <SCRIPT LANGUAGE="JavaScript">
  2. <!--
  3.     /***************************
  4.      *
  5.      *      JS的解释顺序
  6.      *
  7.      ***************************/
  8.      //首先看第一段代码
  9.      function myfun(){
  10.         alert("hello");
  11.      };
  12.      myfun(); // 竟然输出yeah
  13.      function myfun(){
  14.         alert("yeah");
  15.      };
  16.      myfun(); // yeah
  17. //-->
  18. </SCRIPT>

 

==========================================再看第三部分比较======================================

  1. <script>
  2.      //首先看第一段代码
  3.      function myfun(){
  4.         alert("hello");
  5.      };
  6.      myfun(); // hello
  7. </script>
  8. <script>
  9.      function myfun(){
  10.         alert("yeah");
  11.      };
  12.      myfun(); // yeah
  13. </script>

 

通过这3部分区别的比较可以得出结论:

 

       原来JS引擎并非一行行去分析和执行程序,而是一段一段的执行(如3),而且在同一段程序的分析执行中,定义式的函数语句会被优先执行。函数定义执行完以后才会按顺序执行其他语句代码,所以(如2)的原因是第一个函数的语句定义被第二个函数覆盖了。所以两次都是执行最后一个函数逻辑了。

原创粉丝点击