函式是頭等物件
,如同其他物件一樣可以
- 藉由 實質 建立
- 指派給 變數
或 屬性
- 被當作 參數
傳遞
- 作為函式執行結果回傳回來
- 設定屬性
和方法
屬性
,並且在那些屬性 可以用來 儲存
任何資訊:
暫存
,避免不必要的計算宣告函式
、函式表達式
、箭頭函式
、函式生成器
獨立
的敘述句參數
是我們定義函式時所列出來的變數,而 引數
是我呼叫它時,傳遞給函式的值undefined
參數
不定參數
和 預設參數
是JS的新功能:
多餘引數
模組化執行單元
多樣功能
和 強固結構
函式,會在開發時有很大的 靈活性和控制權
實質
來建立。{}
變數
、陣列資料
,或其他物件的屬性引數
傳遞給函式函式的回傳值
動態
建立和 指派的屬性////可以被指派給 `變數`、`陣列資料` ,或其他物件的屬性。
var ninja = {};
ninjaArray.push({});
ninja.data= {};
////可作為 `引數` 傳遞給函式。
function hide(ninija){
ninja.visiblity = false;
//將傳遞進來的物件的 `visiblity` 屬性設置為 `false`
}
hide({}); // 傳遞一個空物件給 `hide` 函式
////可以作為 `函式的回傳值`
function returnNewNinja(){
return{}; // 返回一個空物件
}
////擁有可 `動態` 建立和 指派的屬性
var ninja = {};
ninja.name = "Hanzo";
// 動態為物件添加一個 `name` 屬性,並將其設置為 "Hanzo"
//// 藉由 `實質` 來建立
function ninjaFunction(){}
////可以被指派給 `變數`、`陣列資料` ,或其他物件的屬性。
var ninjaFunction = function(){};
ninjaArray.push(function(){}); // 在陣列中推送一個空函式
ninja.data = function(){}; // 在物件中創建一個名為 `data` 的屬性,並指派一個空函式
////可作為 `引數` 傳遞給函式。
function call(ninjaFunction){
ninjaFunction(); // 呼叫傳遞進來的函式
}
call(function(){}); // 傳遞一個空函式給 `call` 函式
////可以作為 `函式的回傳值`
function returnNewNinjaFunction(){
return function(){}; // 返回一個空函式
}
////擁有可 `動態` 建立和 指派的屬性
var ninjaFunction = function(){};
ninjaFunction.ninja = "Hanzo";
//在函式上動態添加一個 `ninja` 屬性,並將其設置為 "Hanzo"
////指派給變數
const add = function(a, b) {
return a + b;
};
const operation = add;
console.log(operation(2, 3)); // 輸出:5
////作為函式引數傳遞
function doOperation(a, b, operation) {
return operation(a, b);
}
console.log(doOperation(4, 2, add)); // 輸出:6
console.log(doOperation(4, 2, multiply)); // 輸出:8
////作為函式的回傳值
function createMultiplier(factor) {
return function(x) {
return x * factor;
};
}
const double = createMultiplier(2);
console.log(double(5)); // 輸出:10
忍者2