一等公民的函式

2021-10-07 13:38:58 字數 829 閱讀 7339

所謂的「一等公民」,指的是函式與其他的資料型別可以同等對待,如存入陣列,作為引數等等。。

先看個例子:

const hi = name => `hi $`;

const greeting = name => hi(name);

這裡的對hi這個函式又給與了重新的傳參操作,其實大可不必如此,因為hi已經被函式定義過了,在函式程式設計的思維中,它是個變數,與其他的熟知的變數一樣,可以被臨時賦值,所以在這裡我們可以將該**簡化為

const hi = name => `hi $`;

const greeting = hi;//直接賦值

greeting("times"); // "hi times"

是的一旦定義為函式,那麼可以不需要編寫形參等一系列的複雜的間接層,還有乙個好處就是,如果遇到需要加引數的情況下,還需要回頭重新編寫形參,如果採用函式式程式設計,這樣的情況就可以完全避免,示例如下:

//一般處理方式

//需要加上錯誤的處理方式

//以函式式程式設計的**

httpget('/post/2', renderpost); // renderpost 將會在 httpget 中呼叫,想要多少引數都行

值得注意的是,在函式式程式設計的思維中,要格外小心「this」,因為如果一旦this以一等公民的方式呼叫,會出現很多意想不到的錯誤

Headfirst JS 函式是一等公民

目錄 一 函式表示式和函式宣告的底層實現 1 函式宣告 2 函式表示式 匿名函式 3 瀏覽器處理函式宣告的流程 4 將函式位址拷貝給函式指標變數的好處 5 使用函式宣告和函式表示式的細微差別 6 一等值 具有以下性質的值稱為以一等值 function quack num function creat...

python 第一等公民 方法

1.函式的定義 函式傳參的種類 1.普通傳參 def f1 name,age 2.多值傳入 def f2 name,arg 3.預設值傳入 def f3 name tom age none 4.傳入字典 def f4 name,args,kargs 5.注意 1.只能出現乙個 多了識別不了 def ...

scala 學習筆記 07 一等公民的函式

在scala中一切皆物件,一切皆函式,函式跟int,string class等其它型別是處於同等的地位,換句話說,使用函式跟使用普通的型別一樣,沒什麼區別,因此 1 函式可以賦值給變數,可以當引數傳遞 def helloworld msg string unit def foo def main a...