-
函数声明:在执行代码之前会先读取函数声明(即函数声明提升)
例:
if(condition){ sayHi(); function sayHi(){ //第一个函数声明 alert("Hi!"); } } else { sayHi(); function sayHi(){ //第二个函数声明 alert("Yo!"); } } //不要这样写
上面这段代码等价于:
function sayHi(){ alert("Hi!"); } function sayHi(){ alert("Yo!"); } if(condition){ sayHi(); } else { sayHi(); }
大多数浏览器会返回第二个声明,忽略condition; Firefox 会在 condition 为 true 时返回第一个声明。
-
函数表达式:在使用前必须先赋值
//可以这样做
var sayHi;
if(condition){
sayHi = function(){
alert("Hi!")
}
sayHi()
}
else {
sayHi = function(){
alert("Yo!");
}
sayHi()
}