函數聲明與函數表達式

二者看着很像。瀏覽器

函數聲明:function 函數名(){}函數

函數表達式:function 函數名(可寫可不寫)(){}  :命名函數表達式/匿名函數表達式io

 

舉幾個例子:function

function aaa(){}  :函數聲明匿名函數

var a=function aaa(){}  :命名函數表達式命名

var a = function(){}  :匿名函數表達式;錯誤

(function aaa(){}) :表達式函數表達式

區別:

1.函數表達式能夠直接後面加括號執行,而函數聲明不行

function aaa(){alert(1);}() (錯誤)

var a=function aaa(){alert(1);}()     (直接運行)

二、  函數聲明能夠被提早解析出來

if(true){function aaa(){alert(1);}}

else{ function aaa(){alert(2);}};

aaa();   執行結果不肯定,可能 1,可能2,由於函數聲明被預解析,aaa在if以前就被解析完了

 

if(true){var a=function aaa(){alert(1);}}

else{ var a= function aaa(){alert(2);}};

a();   執行結果爲1   先執行的if語句。

 

三、  匿名函數與命名函數的區別

var a=function aaa(){alert(1);}

a(); 全部瀏覽器都支持

aaa();非ie報錯 可是把aaa放在函數裏面 則能夠。ie會將其解析爲a()和aaa();

 

(function aaa(){alert(1)})

aaa()   非ie報錯。

相關文章
相關標籤/搜索