函式(Function)
- 是包含{程式碼片段}的物件。
- 擁有被呼叫、回傳的功能。
-
函式可細分以下幾種 :
-
函式陳述式
- 具名函式。(範例一)
-
函式表達式
-
匿名函式。(範例二)
-
具名函式。(範例三)
-
-
具名的函式能夠在函式中被呼叫使用
|
|
立即函式(IIFE)
- 立刻執行的函式 。(範例一)
- 可以互相傳參考。(範例二)
- 可利用 全域環境(window) 傳參考。(範例三)
|
|
參數(Parameter)
- 是用來接收函式執行帶入的值,可以被賦予新的值。(範例一)
- 當傳入的值不足時,參數會呈現 undefined 。(範例二)
- 若傳入的值是物件,則是傳參考。(範例三)
- 使用 arguments ,可以一次取得所有傳入的值。(範例四)
|
|
閉包(Clousure)
- 在執行函式時才宣告變數,可以減少記憶體。(範例一)
- 在函式裡執行 重複 動作,又稱 函式工廠 。(延伸範例一)
- 在函式裡執行 多種 動作,又稱 私有方法 。(延伸範例二)
|
|
this
- 是一個關鍵字,當執行函式時自動產生,不需要宣告。
- 函式在哪執行,決定 this 是什麼。
-
直接執行的函式,稱為 簡易呼叫(Simple Call) :
-
函式在物件內執行,this等於物件。(範例一)
-
函式在全域環境下執行,this等於window。(範例二)
-
函式在物件內執行非同步事件,this等於window。(範例三)
-
在立即函式裡的this等於window。(範例四)
-
|
|
call、apply、bind
- 改變函式this的方法。
- 傳入的第一個值,會以 建構式 帶入 this 。
傳入的值 | 物件 | 數字 | 字串 | 布林值 | undefined、null、null |
---|---|---|---|---|---|
帶入方式 | new Object() | new Number() | new String() | new Boolean() | window |
-
傳入的第二個值,會帶入參數。
-
call()將傳入的值帶入參數,直接執行。(範例一)
-
apply()將傳入的值以陣列方式帶入參數,直接執行。(範例二)
-
bind()將傳入的值帶入參數,但還 不會執行 ,要再加()才會執行,若再帶入值,則會依需填補空缺,不會覆蓋。(範例三)
-
|
|
嚴格模式(Strict Mode)
- 可立即函式,使用"use strict"來執行環境。(範例一)
- 遇到不會顯示在console.log上的 靜默錯誤 時,會停止運行。(範例二)
- 使用call、apply、bind方法傳入的值不會改變 。
|
|
用call、apply、bind以外的方式傳入值,都是undefined
DOM的this
|
|