浅析js解析顺序收藏
==========================================先看第一部分比较======================================
1. <SCRIPT LANGUAGE="JavaScript">
2. <!--
3. /***************************
4. *
5. * JS的解释顺序
6. *
7. ***************************/
8.
9.
10. //首先看第一段代码
11.
12. var myfunc = function(){
13. alert("hello");
14. };
15.
16. myfunc();// 第一次调用myfunc,输出hello
17.
18. myfunc = function(){
19. alert("yeah");
20. };
21. myfunc();// 第二次调用myfunc,输出yeah
22. //-->
23. </SCRIPT>
==========================================再看第二部分比较======================================
1. <SCRIPT LANGUAGE="JavaScript">
2. <!--
3. /***************************
4. *
5. * JS的解释顺序
6. *
7. ***************************/
8.
9.
10. //首先看第一段代码
11.
12. function myfun(){
13. alert("hello");
14. };
15.
16. myfun(); // 竟然输出yeah
17.
18. function myfun(){
19. alert("yeah");
20. };
21.
22. myfun(); // yeah
23. //-->
24. </SCRIPT>
==========================================再看第三部分比较======================================
1. <script>
2. //首先看第一段代码
3.
4. function myfun(){
5. alert("hello");
6. };
7.
8. myfun(); // hello
9. </script>
10.
11. <script>
12.
13. function myfun(){
14. alert("yeah");
15. };
16.
17. myfun(); // yeah
18.
19. </script>
通过这3部分区别的比较可以得出结论:
原来JS引擎并非一行行去分析和执行程序,而是一段一段的执行(如3),而且在同一段程序的分析执行中,定义式的函数语句会被优先执行。函数定义执行完以后才会按顺序执行其他语句代码,所以(如2)的原因是第一个函数的语句定义被第二个函数覆盖了。所以两次都是执行最后一个函数逻辑了。
==========================================先看第一部分比较======================================
1. <SCRIPT LANGUAGE="JavaScript">
2. <!--
3. /***************************
4. *
5. * JS的解释顺序
6. *
7. ***************************/
8.
9.
10. //首先看第一段代码
11.
12. var myfunc = function(){
13. alert("hello");
14. };
15.
16. myfunc();// 第一次调用myfunc,输出hello
17.
18. myfunc = function(){
19. alert("yeah");
20. };
21. myfunc();// 第二次调用myfunc,输出yeah
22. //-->
23. </SCRIPT>
==========================================再看第二部分比较======================================
1. <SCRIPT LANGUAGE="JavaScript">
2. <!--
3. /***************************
4. *
5. * JS的解释顺序
6. *
7. ***************************/
8.
9.
10. //首先看第一段代码
11.
12. function myfun(){
13. alert("hello");
14. };
15.
16. myfun(); // 竟然输出yeah
17.
18. function myfun(){
19. alert("yeah");
20. };
21.
22. myfun(); // yeah
23. //-->
24. </SCRIPT>
==========================================再看第三部分比较======================================
1. <script>
2. //首先看第一段代码
3.
4. function myfun(){
5. alert("hello");
6. };
7.
8. myfun(); // hello
9. </script>
10.
11. <script>
12.
13. function myfun(){
14. alert("yeah");
15. };
16.
17. myfun(); // yeah
18.
19. </script>
通过这3部分区别的比较可以得出结论:
原来JS引擎并非一行行去分析和执行程序,而是一段一段的执行(如3),而且在同一段程序的分析执行中,定义式的函数语句会被优先执行。函数定义执行完以后才会按顺序执行其他语句代码,所以(如2)的原因是第一个函数的语句定义被第二个函数覆盖了。所以两次都是执行最后一个函数逻辑了。