摘要:與反柯里化什么是柯里化與反柯里化純函數(shù)函數(shù)結(jié)果只受傳入?yún)?shù)影響,參數(shù)一定,結(jié)果一定。寫法柯里化接受一次性傳入多個參數(shù)調(diào)用的函數(shù),也可以傳入部分參數(shù)調(diào)用,最后使它返回一個單一參數(shù)的函數(shù)去處理,并且返回。
call與apply反柯里化? 什么是柯里化與反柯里化?
純函數(shù)
函數(shù)結(jié)果只受傳入?yún)?shù)影響,參數(shù)一定,結(jié)果一定。
高階函數(shù)
一個函數(shù)可以接收另一個函數(shù)作為參數(shù),這種函數(shù)稱為高階函數(shù)。
function add (x,y,foo){ return foo(x) + foo(y) } add(1,2,Math.abs) =>3
// es6寫法
let add2 = (x,y,foo) => foo(x)+foo(y) console.log(add2(-1,2,Math.abs)) =>3
柯里化(Currying)
接受一次性傳入多個參數(shù)調(diào)用的函數(shù),也可以傳入部分參數(shù)調(diào)用,最后使它返回一個單一參數(shù)的函數(shù)去處理,并且返回。其中也可以傳入函數(shù)作為參數(shù),相當靈活。
let add =(a,b)=>a+b console.log(add(1,2)) // 正常寫法,需要傳遞兩個參數(shù)給add // add(1)=>NAN(缺少一個參數(shù)) let add2 = a=>b=>a+b console.log(add2(1)(2)) // 柯里化寫法,將參數(shù)變換成一個,延遲函數(shù)參數(shù)的傳入 // add2(1) => function(b) {return a+ b}
柯里化特點
延遲參數(shù)傳遞,參數(shù)復(fù)用
代碼短小,優(yōu)雅,函數(shù)化,有點不好理解
多重箭頭函數(shù)與柯里化
ES5
let add = function(x){ return function(y){ return x+y } } console.log(add(2)(4)) =>6
箭頭函數(shù)
let add = x => y =>x+y console.log(add(2)(4))
函數(shù)作為參數(shù)
var add = function(x) { return function(y) { return x + y; } } console.log(add(1)(1)); //output 2 var add1 = add(1); // try to compare this! add1, add1() and add1(1) console.log(add1(1)); //output 2 var add10 = add(10); console.log(add10(1)); //output 11
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/106181.html
摘要:里也有柯里化的實現(xiàn),只是平時沒有在意。如果函數(shù)柯里化后雖然生搬硬套,不過現(xiàn)實業(yè)務(wù)也會有類似場景。 柯里化 先解釋下什么是 柯里化 在計算機科學中,柯里化(英語:Currying),又譯為卡瑞化或加里化,是把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(最初函數(shù)的第一個參數(shù))的函數(shù),并且返回接受余下的參數(shù)而且返回結(jié)果的新函數(shù)的技術(shù)。 js 里也有柯里化的實現(xiàn),只是平時沒有在意。先把原文簡介貼...
摘要:作為函數(shù)式編程語言,帶來了很多語言上的有趣特性,比如柯里化和反柯里化。而反柯里化,從字面講,意義和用法跟函數(shù)柯里化相比正好相反,擴大適用范圍,創(chuàng)建一個應(yīng)用范圍更廣的函數(shù)。作為函數(shù)式編程語言,JS帶來了很多語言上的有趣特性,比如柯里化和反柯里化。 可以對照另外一篇介紹 JS 柯里化 的文章一起看~ 1. 簡介 柯里化,是固定部分參數(shù),返回一個接受剩余參數(shù)的函數(shù),也稱為部分計算函數(shù),目的是為了縮...
摘要:一直以來沒有對函數(shù)式編程有一個全面的學習和使用,或者說沒有一個深刻的思考。是不是輕松了其實函數(shù)式編程主張的就是以抽象的方式創(chuàng)建函數(shù)。后面咱們在系統(tǒng)性的學習下函數(shù)式編程。 一直以來沒有對函數(shù)式編程有一個全面的學習和使用,或者說沒有一個深刻的思考。最近看到一些博客文章,突然覺得函數(shù)式編程還是蠻有意思的??戳诵臀恼隆_@里記載下感悟和收獲。 歡迎團隊姜某人多多指點@姜少。 由于博客秉持著簡...
摘要:作為函數(shù)式編程語言,帶來了很多語言上的有趣特性,比如柯里化和反柯里化。在一些函數(shù)式編程語言中,會定義一個特殊的占位變量。個人理解不知道對不對延遲執(zhí)行柯里化的另一個應(yīng)用場景是延遲執(zhí)行。不斷的柯里化,累積傳入的參數(shù),最后執(zhí)行。作為函數(shù)式編程語言,JS帶來了很多語言上的有趣特性,比如柯里化和反柯里化。 這里可以對照另外一篇介紹 JS 反柯里化 的文章一起看~ 1. 簡介 柯里化(Currying)...
摘要:作為函數(shù)式編程語言,帶來了很多語言上的有趣特性,比如柯里化和反柯里化。個人理解不知道對不對延遲執(zhí)行柯里化的另一個應(yīng)用場景是延遲執(zhí)行。不斷的柯里化,累積傳入的參數(shù),最后執(zhí)行。 作為函數(shù)式編程語言,JS帶來了很多語言上的有趣特性,比如柯里化和反柯里化。 這里可以對照另外一篇介紹 JS 反柯里化 的文章一起看~ 1. 簡介 柯里化(Currying),又稱部分求值(Partial Evalu...
閱讀 3128·2021-02-22 17:12
閱讀 754·2019-08-30 15:55
閱讀 3157·2019-08-30 15:54
閱讀 1418·2019-08-29 16:56
閱讀 1887·2019-08-29 15:13
閱讀 1748·2019-08-29 13:19
閱讀 631·2019-08-26 13:40
閱讀 2851·2019-08-26 10:26