筆記:覺得 JavaScript function 很有趣的我是不是很奇怪


Posted by rockyooooooo on 2021-07-05

覺得 JavaScript function 很有趣的我是不是很奇怪

  • 在 Javascript 裡面,function 也是一個物件,一個 Callable Object,可以呼叫的物件,內部會實作 [[Call]] 這個 method
  • function 是個物件,所以可以把它當作物件來用,例如用 func.age = 18 來新增屬性跟值
  • 不過 func.length 不會是屬性的個數,而是 function 參數的個數
  • 利用 call()apply() 可以避免函式複寫的問題,直接呼叫原生的 prototype method

建立函式的常見方法

  1. Function Declaration:function a(){}
  2. Function Expression:const b = function() {}
  3. Function Constructor:const c = new Function()
  4. Named Function Expression:const d = function e() {}

named function expression

匿名函式的相反(?)有名函式(?),在用匿名函式的情況下,其實也可以把匿名函式取名,例如:const func = function test() {}

此時外面是存取不到 test() 的,只有 test() 自己的函式裡面才能存取的到,外面只能用 func()

優點

  1. Reliable function self-reference:可以 self-reference,例如遞迴
  2. More debuggable stack traces:debug 比較好在 stack trace 追蹤 code
  3. More self-documenting code:程式碼可讀性較高(?)

參考資料

覺得 JavaScript function 很有趣的我是不是很奇怪
[day19] YDKJS (Scope) : Kyle Simpson 史上超級無敵討厭 匿名函式(Anonymous function)

tags: 筆記

#note #javascript







Related Posts

03. 建立items resource

03. 建立items resource

MTR04_1019

MTR04_1019

Hoisting

Hoisting


Comments