函式宣告與函式表示式基礎介紹
阿新 • • 發佈:2019-01-31
函式宣告: function a(){ alert(1); }
函式表示式:
匿名:var a=function(){alert(1);};
命名:var a=function fn(){alert(1);};
函式宣告轉化成函式表示式:加()、~等;
ps: 表示式
- ( function a(){ alert(1);} )
- ~function a(){alert(1);}
二者區別:
函式聲明後面不可以加();
函式表示式可在後面加();然後裡面的語句就會執行。
函式宣告:
a();//1
function a(){ alert(1); }函式表示式:
a();//報錯
var a=function fn(){alert(1);}
2.
if(true){
function fn(){
alert(1);
};
}else{
function fn(){
alert(2);
};
};
fn1();//函式宣告要提前預解析,但每個瀏覽器的解析機制不一樣,所以結果是不一樣的,IE解析的結果是1,火狐解析的結果是2.
if(true){
var a= function fn(){
alert(1);
alert(typeof fn); } //在內部可以訪問到
}else{
var a = function fn(){
alert(2);
};
};
a();//每個瀏覽器的結果一樣。
fn();//在外部訪問,IE能彈出結果,ff解析報錯,所以建議這種情況不要使用函式名。
注意:把函式當成值得情況下,都可以使用匿名函式。(閉包)。