Function 宣告(Declarations) v.s. Function 表達式(Expressions)
- Function 宣告(Declarations)
function myCount1(x, y) {
return x * y;
}
- Function 表達式(Expressions)
- 表達式有分號結尾,因為它是一個可執行的陳述式
- 表達式的寫法是"匿名(anonymous) function",不需要 function name,因為在使用使用時用變數的名字即可
Function Hoisting
Function 宣告(Declarations),也有 Hoisting 的特性
但是Function 表達式(Expressions),沒有
匿名自我呼叫函式(anonymous self-invoking function)
特性:
- function 會立即執行
- 獨立擁有作用域,可避免檔案過大時,使用變數時和全域變數衝突
(function () {
// 這個函式會立即執行
})();
Function 根本上是物件(Object)
- typeof function(){}是 function
- functions 也擁有屬性(properties)和方法(methods)
- 當 function 成為 object的屬性(properties)時,稱之為方法(methods)
- 當 function 被設計為建立物件時(objects)時,稱之為物件建構式(object constructor)
Arrow Functions
ES6的語法,有更簡潔的方式來撰寫 Function 表達式(Expressions)
特性:
- 沒有自己的 this
- 因此不適合用來定義物件方法(object methods)
- 沒有 Hoisting 的特性
- 盡量使用 const 宣告
沒有留言:
張貼留言