定义函数有三种方式:1,function fun()这种叫函数申明;2,var fun=function()这种叫函数表达式;3,var fun=new Function()也叫函数表达式。
在同一个执行环境中,函数申明不管是在什么位置,都会被提升至代码的最前面,即便前面是函数表达式,这个是js的规则。
例题:
function fun (){
alert(0);
}
fun();
var fun = function (){
alert(1);
}
fun();
var fun =function (){
alert(2);
}
fun();
function fun (){
alert(3);
}
fun();
答案:3122
最先执行的肯定是第一个fun(),它指向最后的那个function fun ()。然后又执行第二个fun(),它指向第一个var fun = function ()。然后执行第三个fun(),第二个var fun = function ()覆盖第一个,因为js没有重载的方法,所以就是这么个运行流程。
等同于代码变成了这样:
function fun (){
alert(0);
}
function fun (){
alert(3);
}
fun();
var fun = function (){
alert(1);
}
fun();
var fun =function (){
alert(2);
}
fun();
fun();