Function及Callback function
JavaScript裡的Function的基本介紹
與Function相關的new object, scope, this 會在Object, Scope, this 裡詳細介紹
可參考 JavaScript Function Definitions http://www.w3schools.com/js/js_function_definition.asp
所謂的function/library一般有兩種.
語言內建.
自己寫的或是別人寫好的. 但因為JavaScript的執行環境(平台)比其他語言還要來得多種. 所以Browser跟Node.js都各有提供它們平台上面非語言內建的function,且有些相容,有些不相容.
function裡面也可以有內部的function(nested function). 此特性在其他語言或多或少也有, 但不像JavaScript那麼直接.
JavaScript裡, function本身除了是純function外, 也可以是一種object的定義, 並使用new
來產生物件, 即此function同時像是 其他語言的constructer建構子一樣. ES6才有其他語言有的class以及正式的constructer function出現.
function的arguments
function的arguments, 除了明顯的宣告parameters外,可以在function內部用arguments[i]的方式得到每一個argument, e.g.
亦也可以傳入少於定義的參數個數. 即
anonymous function 匿名函數
The function left is actually an anonymous function (a function without a name).
JavaScript中的Function definition: expression, declaration
可參考: http://blogger.gtwang.org/2014/04/defining-javascript-functions.html
Expressoin:
Declaration:
Notes:
如果是使用Exression的方式在loop裡, 會產生多次的Function Object.
Exression的使用要看當時的使用情境, 不過若使用則建議不採用匿名方式來幫助debug. http://programmers.stackexchange.com/questions/160732/function-declaration-as-var-instead-of-function, 即
Callback function
Object, Scope, this章節有一些進階的callback的例子, Array的map等function其實也有用到callback function
在各種程式語言裡, callback function是很重要的概念. 應為各式各樣的 API(e.g.jQuery) 或EventListener
的基礎
通常可分為兩種角色
定義 API/Callback介面的人(設計者)
使用這 API的人(使用者), 需定義/實作callback function
jQuery的例子:
callback有分需要用到this, 以及沒有需要用到this的case.即上述兩例, 後面的sections會詳細講解this.
self invoke function (定義跟執行同時)
常用來跟module pattern搭配.(其可參考進階-module,timer一章)
Last updated