函数有“定义式”和“变量式”两种写法的区别
函数有“定义式”和“变量式”两种写法,两者基本区别不大。主要区别在于,如果在同一个代码块(Script标签对)定义两个同名的函数,浏览器在预编译代码时,使用定义式的,第一个函数会被第二个覆盖,而变量式的则会按顺序执行。因为JavaScript执行引擎并非一行一行地分析和执行程序,而是一段一段地分析执行的。而且,在同一段程序的分析执行中,定义式的函数语句会被提 取出来优先执行。函数定义执行完之后,才会按顺序执行其他语句代码。也就是说,在第一次调用myfunc之前,第一个函数语句定义的代码逻辑,已被第二个 函数定义语句覆盖了。所以,两次都调用都是执行最后一个函数逻辑了。
示例如下:
var myfunc = function () { alert("hello"); }; myfunc(); //第一次调用myfunc,输出hello myfunc = function () { alert("yeah"); }; myfunc(); //第二次调用myfunc,将输出yeah
function myfunc () { alert("hello"); }; myfunc(); //这里调用myfunc,输出yeah而不是hello function myfunc () { alert("yeah"); }; myfunc(); //这里调用myfunc,当然输出yeah