真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

JavaScript里的柯里化與反柯里化是什么意思-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“JavaScript里的柯里化與反柯里化是什么意思”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“JavaScript里的柯里化與反柯里化是什么意思”吧!

巨野網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)!從網(wǎng)頁設(shè)計、網(wǎng)站建設(shè)、微信開發(fā)、APP開發(fā)、成都響應(yīng)式網(wǎng)站建設(shè)公司等網(wǎng)站項目制作,到程序開發(fā),運營維護。創(chuàng)新互聯(lián)從2013年成立到現(xiàn)在10年的時間,我們擁有了豐富的建站經(jīng)驗和運維經(jīng)驗,來保證我們的工作的順利進行。專注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)。

我們先來簡單了解一下他們的作用。

柯里化又稱部分求值,字面意思就是不會立刻求值,而是到了需要的時候再去求值。如果看的懵逼,沒事,看完整篇文章再回過頭來看這里你就會豁然開朗。

反柯里化的作用是,當我們調(diào)用某個方法,不用考慮這個對象在被設(shè)計時,是否擁有這個方法,只要這個方法適用于它,我們就可以對這個對象使用它。

柯里化(curring)

我們有這樣一個場景,記錄程序員一個月的加班總時間,那么好,我們首先要做的是記錄程序員每天加班的時間,然后把一個月中每天的加班的時間相加,就得到了一個月的加班總時間。

但問題來了,我們有很多種方法可以實現(xiàn)它,比如最簡單的:

varmonthTime=0;functionovertime(time){returnmonthTime+=time;}overtime(3.5);//第一天overtime(4.5);//第二天overtime(2.1);//第三天//...console.log(monthTime);//10.1

每次傳入加班時間都進行累加,這樣當然沒問題,但你知道,如果數(shù)據(jù)量很大的情況下,這樣會大大犧牲性能。

那怎么辦?這就是柯里化要解決的問題。

其實我們不必每天都計算加班時間,只需要保存好每天的加班時間,在月底時計算這個月總共的加班時間,所以,其實只需要在月底計算一次就行。

2011年JavaScript之父BrendanEich發(fā)表了一篇Twitter,提出了反柯里化這個思想,下面這段代碼是反柯里化的實現(xiàn)方式之一:

Function.prototype.uncurring=function(){varself=this;returnfunction(){varobj=Array.prototype.shift.call(arguments);returnself.apply(obj,arguments);};};

我們先來看看上面這段代碼有什么作用。

我們要把Array.prototype.push方法轉(zhuǎn)換成一個通用的push函數(shù),只需要這樣做:

varpush=Array.prototype.push.uncurring();//測試一下(function(){push(arguments,4);console.log(arguments);//[1,2,3,4]})(1,2,3)

arguments本來是沒有push方法的,通常,我們都需要用Array.prototype.push.call來實現(xiàn)push方法,但現(xiàn)在,直接調(diào)用push函數(shù),既簡潔又意圖明了。

到此,相信大家對“JavaScript里的柯里化與反柯里化是什么意思”有了更深的了解,不妨來實際操作一番吧!這里是創(chuàng)新互聯(lián)建站,更多相關(guān)內(nèi)容可以進入相關(guān)頻道進行查詢,關(guān)注我們,繼續(xù)學習!


網(wǎng)站題目:JavaScript里的柯里化與反柯里化是什么意思-創(chuàng)新互聯(lián)
文章來源:http://weahome.cn/article/desjop.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部