JS-函式宣告 和 函式表示式
阿新 • • 發佈:2018-12-06
問題:
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 結構中的函式會轉換為表示式,但是它又可以在外部呼叫(和上面的結論存在矛盾)
注:個人學習筆記