最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JavaScript函數(shù)柯里化原理與用法分析

 更新時間:2017年03月31日 10:56:24   作者:柒青衿  
這篇文章主要介紹了JavaScript函數(shù)柯里化原理與用法,分析了函數(shù)柯里化的概念、原理、功能并結合實例形式給出了柯里化函數(shù)的具體使用技巧,需要的朋友可以參考下

本文實例講述了JavaScript函數(shù)柯里化原理與用法。分享給大家供大家參考,具體如下:

柯里化是這樣的一個轉換過程,把接受多個參數(shù)的函數(shù)變換成接受一個單一參數(shù)(譯注:最初函數(shù)的第一個參數(shù))的函數(shù),如果其他的參數(shù)是必要的,返回接受余下的參數(shù)且返回結果的新函數(shù)。

也就是說是固定部分參數(shù),返回一個接受剩余參數(shù)的函數(shù),也稱為部分計算函數(shù),目的是為了縮小適用范圍,創(chuàng)建一個針對性更強的函數(shù)。

例如,我想創(chuàng)建一個做自我介紹的函數(shù),每個人只要輸入自己姓名、性別、年齡即可。但是當A使用這個函數(shù)時,每次調用,都必須輸入一次自己姓名、性別,實際只是年齡改變了而已,為此A會為自己生成一個柯里化的自我介紹函數(shù),其中姓名和性別是固定參數(shù)。

相關代碼請查看github.

function curry(fn){
  var args = Array.prototype.slice.call(arguments, 1);
  return function(){
    var innerArgs = Array.prototype.slice.call(arguments);
    var finalArgs = args.concat(innerArgs);
    return fn.apply(null, finalArgs);
  };
}
function selfIntroduction(name, gender, age){
  console.log('hi, I am ' + name + ', ' + age +' years old ' + '. I am a ' + gender + '.');
}
var curriedSelfIntroduction = curry(selfIntroduction, 'A', 'man');
curriedSelfIntroduction('12');
curriedSelfIntroduction('13');
curriedSelfIntroduction('14');

執(zhí)行以后結果。

當然,我們也可以寫一個綁定新作用域的柯里化函數(shù)。

function curry(fn, context){
  var args = Array.prototype.slice.call(arguments, 2);
  return function(){
    var innerArgs = Array.prototype.slice.call(arguments);
    var finalArgs = args.concat(innerArgs);
    return fn.apply(context, finalArgs);
  };
}

盡管柯里化函數(shù)已經很牛了,但是它也讓你必須花費點小心思在你所定義函數(shù)的參數(shù)順序上。函數(shù)柯里化允許和鼓勵你分隔復雜功能變成更小更容易分析的部分。這些小的邏輯單元顯然是更容易理解和測試的,然后你的應用就會變成干凈而整潔的組合,由一些小單元組成的組合。所以如果你能恰當使用柯里化函數(shù),會使得你的JS代碼更優(yōu)雅。

注意:建議你看一看ES6(ES2015)中的Proxy,這是另一種對函數(shù)進行預處理的方法。

更多關于JavaScript相關內容可查看本站專題:《javascript面向對象入門教程》、《JavaScript中json操作技巧總結》、《JavaScript切換特效與技巧總結》、《JavaScript查找算法技巧總結》、《JavaScript動畫特效與技巧匯總》、《JavaScript錯誤與調試技巧總結》、《JavaScript數(shù)據結構與算法技巧總結》、《JavaScript遍歷算法與技巧總結》及《JavaScript數(shù)學運算用法總結

希望本文所述對大家JavaScript程序設計有所幫助。

相關文章

  • js自定義事件及事件交互原理概述(一)

    js自定義事件及事件交互原理概述(一)

    在JS中事件是JS與瀏覽器交互的主要途徑,本文主要介紹下最簡單的自定義事件,不過還有很多缺陷,感興趣的朋友可以了解下,或許對你學習自定義事件有所幫助
    2013-02-02
  • 微信小程序實現(xiàn)裁剪圖片大小

    微信小程序實現(xiàn)裁剪圖片大小

    這篇文章主要為大家詳細介紹了微信小程序實現(xiàn)裁剪圖片大小,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-05-05
  • Js 本頁面?zhèn)髦祵崿F(xiàn)代碼

    Js 本頁面?zhèn)髦祵崿F(xiàn)代碼

    記得以前在學校的時候,例如要修改信息,需要要修改的部分的值顯示出來,都是先把數(shù)據傳到后臺,然后再在前臺顯示的,想想真夠笨的,這個可以在客戶端就實現(xiàn)的,何必要傳到后臺呢
    2009-05-05
  • js 轉義字符及URI編碼詳解

    js 轉義字符及URI編碼詳解

    本文主要介紹了轉義字符及URI編碼的相關知識,具有很好的參考價值,下面跟著小編一起來看下吧
    2017-02-02
  • js中將多個語句寫成一個語句的兩種方法小結

    js中將多個語句寫成一個語句的兩種方法小結

    js中將多個語句寫成一個語句的兩種方法講述了逗號運算符將多個語句寫成一個語句以及花括號寫成一個語句的實現(xiàn)方法,需要的朋友可以參考一下
    2007-12-12
  • javascript中$(function() {});寫與不寫有哪些區(qū)別

    javascript中$(function() {});寫與不寫有哪些區(qū)別

    javascript中$(function() {....}) 是jQuery中的經典用法,等同于 $(document).ready(function() {....}) javascript中$(function() {});寫與不寫有哪些區(qū)別,需要的朋友可以參考下
    2015-08-08
  • js制作xml在線編輯器實例

    js制作xml在線編輯器實例

    本文主要講解了利用js制作xml在線編輯器的實例,文中講解實例的圖片和代碼非常詳細,感興趣的小伙伴現(xiàn)在一起來看一看吧
    2021-08-08
  • JavaScript截取字符串的2個函數(shù)介紹

    JavaScript截取字符串的2個函數(shù)介紹

    這篇文章主要介紹了JavaScript截取字符串的2個函數(shù)介紹,它們分別是substring和substr函數(shù),本文用實例講解了它們的用法,需要的朋友可以參考下
    2014-08-08
  • 微信小程序 自定義彈窗實現(xiàn)過程(附代碼)

    微信小程序 自定義彈窗實現(xiàn)過程(附代碼)

    這篇文章主要介紹了微信小程序 自定義彈窗實現(xiàn)過程(附代碼),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-12-12
  • javascript在網頁中實現(xiàn)讀取剪貼板粘貼截圖功能

    javascript在網頁中實現(xiàn)讀取剪貼板粘貼截圖功能

    這篇文章主要介紹了在網頁中實現(xiàn)讀取剪貼板粘貼截圖功能,即可以把剪貼板的截圖Ctrl+V粘貼到網頁的一個輸入框中,例如QQ截圖、旺旺截圖或者其它截圖軟件,需要的朋友可以參考下
    2014-06-06

最新評論

三明市| 靖江市| 黔江区| 吴桥县| 马山县| 河津市| 大厂| 乌鲁木齐市| 双桥区| 个旧市| 诏安县| 东阿县| 固始县| 桐梓县| 苍梧县| 同江市| 永州市| 砚山县| 信阳市| 观塘区| 二连浩特市| 柳林县| 安远县| 广州市| 奉贤区| 台东县| 丘北县| 洛隆县| 息烽县| 简阳市| 吴旗县| 青海省| 远安县| 运城市| 通河县| 望都县| 黑龙江省| 乌苏市| 利川市| 宿州市| 蓬莱市|