js函数的定义两种方式:函数声明和函数表达式
- 函数声明
函数调用可以在函数声明之前
test();
function test(){
alert("this is a test funciton");
}
这是因为js在代码执行之前会先加载函数声明
- 函数表达式
test();
var test = function(){
alert("this is a test");
}
以上代码则会报错,提示未声明先调用
理解函数声明提升的关键就是理解函数声明和函数表达式之间的区别
if(condition){
funciton test(){
alert("condition is true");
}
}else{
function test(){
alert("condition is false");
}
}
此处是函数声明,test()函数会被提升,而不同的浏览器提升机制不一致,导致有可能只执行第二个test()函数。因此以上例子应该使用函数表达式
if(condition){
test = funciton(){
alert("condition is true");
}
}else{
test = function(){
alert("condition is false");
}
}