看到一篇博文中写到了关于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 。