Javascript
first-class

[js] First-class Function

當一個語言中,function 可以向其他變數一樣被傳來傳去時,就稱為 First-class Function。

比如說在 javascript 中可以將 function 作為參數傳給其他 function,或是可以當作 function return 的對象,也可以當作一個被 assign 給變數的值。

其實只要了解到 function 也是 object,這一切就很自然。

用state函式庫來舉例.ts
// 這跟closure也有關係
// as arguments
export const createStore = (init) => {
  let store = null;
  const get = () => store;
  const set = (operation) => (store = operation(store));
 
  store = init(get, set);
 
  // assign
  const useStore = () => {
    return store;
  };
 
  // return
  return useStore;
};

建立了一個 function(on the fly)並 assign 給 createStore,然後 export,所以再來 import 並使用這個 createStore 的時候,都會拿到同一個 useStore function,執行後得到同一個 store。