声明式函数:
//不能这样使用
if(conditio){
function sayHi(){}
}else{
function sayHi(){
alert('hi');
}
}
表达式函数:
var sayHi;
//这样没有问题
if(conditio){
sayHi = function(){};
}else{
sayHi = function(){
alert('hi');
};
}
对于声明式函数,浏览器大部分会返回第二个函数,condition将会被忽略。对于表达式函数(匿名函数)则不存在该问题。这与Js的引擎有关。