js函式柯里化的理解

2021-08-19 01:26:42 字數 1109 閱讀 1300

函式柯里化理解示例

// 求和

let add = function (a, b, c)

}}else

}}}

引數解構版本:

function curry(fn, ...args) 

} let f1 = add.bind()

console.log(f1(2, 3))// 5

// 但是簡單版bind實現不支援物件和其他引數同時傳入,如下:

let f2 = add.bind(, 2, 3)

// 因為上一行**傳入的2、3並沒有接收到,所以求和後返回nan

console.log(f2())// nan

} }

let f1 = add.bind()

console.log(f1(2, 3))// 5

// 複雜版bind實現支援物件和其他引數同時傳入,如下:

let f2 = add.bind(, 2, 3)

console.log(f2())// 5

// 但是複雜版bind實現多次呼叫會報錯,如下:

let f3 = add.bind()

// console.log(f3(2)(3))// uncaught typeerror: f3(...) is not a function

}

js bind() 方法之人和狗的故事

js中的bind的實現以及使用

裝飾者模式理解示例(使用了柯里化)

大家看以下**,是不是思路都是想通的,詳細的大家就自行拓展吧

// 在之前執行

function.prototype.before = function (fn)

}// 在之後執行

function.prototype.after = function (fn)

}function foo(params)

// 鉤子可以共享引數和返回值

console.log(foo.before((params) => ).after((params) => )())

js函式柯里化

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

js 函式柯里化

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

js 函式柯里化

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