js函式柯里化

2021-10-01 18:00:25 字數 1748 閱讀 7337

題目描述

實現函式 functionfunction,呼叫之後滿足如下條件:

1、返回值為乙個函式 f

2、呼叫返回的函式 f,返回值為按照呼叫順序的引數拼接,拼接字元為英文逗號加乙個空格,即 ', 』

3、所有函式的引數數量為 1,且均為 string 型別

示例1輸入

functionfunction(『hello』)(『world』)

輸出hello, world

function functionfunction(str) 

return f;

}

普通的add函式

function add(x, y)

currying後

function curryingadd(x) }

add(1, 2) // 3

curryingadd(1)(2) // 3

來列一列currying有哪些好處呢?

1. 引數復用

正常正則驗證字串 reg.test(txt)

函式封裝後

function check(reg, txt)

check(/\d+/g, 'test') //false

check(/[a-z]+/g, 'test') //true

currying後

function curryingcheck(reg) }

var hasnumber = curryingcheck(/\d+/g)

var hasletter = curryingcheck(/[a-z]+/g)

hasnumber('test1') // true

hasnumber('testtest') // false

hasletter('21212') // false

2. 提前確認

var on = function(issupport, element, event, handler) else

} 3. 延遲執行

function.prototype.bind = function (context)

} 題目描述:

已知 fn 為乙個預定義函式,實現函式 curryit,呼叫之後滿足如下條件:

1、返回乙個函式 a,a 的 length 屬性值為 1(即顯式宣告 a 接收乙個引數)

2、呼叫 a 之後,返回乙個函式 b, b 的 length 屬性值為 1

3、呼叫 b 之後,返回乙個函式 c, c 的 length 屬性值為 1

4、呼叫 c 之後,返回的結果與呼叫 fn 的返回值一致

5、fn 的引數依次為函式 a, b, c 的呼叫引數

示例:輸入:

var fn = function (a, b, c) ; curryit(fn)(1)(2)(3);

輸出:6

柯里化是把接受多個引數的函式變換成接受乙個單一引數(最初函式的第乙個引數)的函式,並且返回接受餘下的引數且返回結果的新函式的技術。簡單理解題目意思,就是指,我們將預定義的函式的引數逐一傳入到curryit中,當引數全部傳入之後,就執行預定義函式。

function curryit(fn) else

} return result;

}

var fn = function (a, b, c) ;

curryit(fn)(1)(2)(3);

js函式柯里化

什麼是函式柯里化?在電腦科學中,柯里化 currying 是把接受多個引數的函式變換成接受乙個單一引數 最初函式的第乙個引數 的函式,並且返回接受餘下的引數且返回結果的新函式的技術。這個技術由 christopher strachey 以邏輯學家 haskell curry 命名的,儘管它是 mos...

js 函式柯里化

函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的 來說明函式柯里化的原理 circle函式,接受半徑r和 function circle r,p 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積 不管怎麼樣,是不會變的,因此我們將他寫...

js 函式柯里化

函式柯里化的主要目的就是為了減少函式傳參,同時將一些固定引數私有化。下面展示一段非常簡單計算圓面積的 來說明函式柯里化的原理 circle函式,接受半徑r和 function circle r,p 通過函式柯里化來簡化circle函式,只傳入半徑就能計算出面積 不管怎麼樣,是不會變的,因此我們將他寫...