1. 程式人生 > >JS-函式宣告 和 函式表示式

JS-函式宣告 和 函式表示式

 

 

問題:

      1, function foo() {};     

      2, var foo = function () {};

 

1,上面的語法是宣告,可以提升,因此在函式定義的上方也可以呼叫

2,下面的語法是函式表示式,函式名是 foo (其實是變數名提升),提升的不是函式體

 

### 函式表示式也支援名字語法的

*********************************************

var foo  = function func() {

   console.log(func);       //在函式內部可以這樣子用,把函式體打印出來

};

func(); //不能如此呼叫 

foo();

**********************************************

 

***函式有一個屬性name,表示的是函式名,只有帶有名字的函式定義,才會有name屬性值,否則是 " "。

***但是,函式表示式的名字(函式的name屬性),只允許在函式內部使用,(特殊)ie8允許訪問。

 

**********************************************************************************

 

1,新的瀏覽器中,寫在if while do-while 結構中的函式會轉換為表示式,但是它又可以在外部呼叫(和上面的結論存在矛盾)


注:個人學習筆記