2019年4月11日 星期四

[Back To Basic] Javascript - Function

Function 宣告(Declarations) v.s. Function 表達式(Expressions)

  • Function 宣告(Declarations)

function myCount1(x, y) {
    return x * y;
}
  • Function 表達式(Expressions)
var myCount2 = function (x, y) { return x * y };

  1. 表達式有分號結尾,因為它是一個可執行的陳述式
  2. 表達式的寫法是"匿名(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 宣告

沒有留言:

張貼留言