摘要:命令式代碼與聲明式代碼前面我們介紹了函數(shù)式編程中常見的幾種函數(shù),下面我們要開始轉(zhuǎn)變觀念了。命令式聲明式我們看下函數(shù)的簡單實(shí)現(xiàn)。接受個(gè)參數(shù)這個(gè)常見的函數(shù)會(huì)在我們函數(shù)式編程中經(jīng)常出現(xiàn)的三個(gè)函數(shù)。一段函數(shù)式編程的綜合應(yīng)用
我們接下來介紹函數(shù)式語言中3個(gè)常見的函數(shù):Map,Filter,Reduce。
命令式代碼與聲明式代碼前面我們介紹了函數(shù)式編程中常見的幾種函數(shù),下面我們要開始轉(zhuǎn)變觀念了。
命令式代碼的意思就是,我們通過編寫一條又一條指令去讓計(jì)算機(jī)執(zhí)行一些動(dòng)作,這其中一般都會(huì)涉及到很多繁雜的細(xì)節(jié)。 而聲明式就要優(yōu)雅很多了,我們通過寫表達(dá)式的方式來聲明我們想干什么,而不是通過一步一步的指示。
// 命令式 const makes = []; for (i = 0; i < cars.length; i++) { makes.push(cars[i].make); } // 聲明式 var makes = cars.map(function(car){ return car.make; });
我們看下es5 Map,Filter,Reduce函數(shù)的簡單實(shí)現(xiàn)。
Array.prototype.map = function(f) { const newArray = []; const O = Object(this); for (let i = 0; i < O.length; i++) { newArray[i] = f(O[i]); } return newArray; } Array.prototype.filter = function(pred) { const newArray = []; for (var i = 0; i < this.length; ++i) { if (pred(this[i])) newArray[newArray.length] = this[i]; } return newArray; } Array.prototype.reduce = function(f, start) { var acc = start; for (var i = 0; i < this.length; ++i) acc = f(this[i], acc); // f() 接受2個(gè)參數(shù) return acc; };
這3個(gè)常見的函數(shù)會(huì)在我們函數(shù)式編程中經(jīng)常出現(xiàn)的三個(gè)函數(shù)。
有一點(diǎn)需要說明的是,for循環(huán)是自然語言的處理結(jié)果,永遠(yuǎn)是比map快的。這個(gè)就需要你自己在編寫代碼的時(shí)候?qū)走M(jìn)行權(quán)衡。
一段函數(shù)式編程的綜合應(yīng)用
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/82882.html
摘要:自執(zhí)行函數(shù)閉包實(shí)現(xiàn)模塊化以樂之名程序員產(chǎn)品經(jīng)理對(duì)作用域,以及閉包知識(shí)還沒掌握的小伙伴,可回閱前端進(jìn)擊的巨人三從作用域走進(jìn)閉包。參考文檔利用閉包實(shí)現(xiàn)模塊化翻譯淺談中的高階函數(shù)系列更文請(qǐng)關(guān)注專欄前端進(jìn)擊的巨人,不斷更新中。。。 系列更文前三篇文章,圍繞了一個(gè)重要的知識(shí)點(diǎn):函數(shù)。函數(shù)調(diào)用棧、函數(shù)執(zhí)行上下文、函數(shù)作用域到閉包??梢姴焕斫夂瘮?shù)式編程,代碼都擼不好。 showImg(https:/...
摘要:在學(xué)習(xí)的過程中時(shí)常會(huì)聽到一個(gè)名次函數(shù)式編程,那么究竟什么是函數(shù)式編程,函數(shù)式編程又有什么優(yōu)點(diǎn),這就在這篇博客進(jìn)行一個(gè)簡單的總結(jié)吧主要內(nèi)容函數(shù)式編程的概念函數(shù)式編程的優(yōu)點(diǎn)與示例什么是函數(shù)式編程首先,我們放下編程的概念,我們來看函數(shù)。 在學(xué)習(xí) JS 的過程中時(shí)常會(huì)聽到一個(gè)名次——函數(shù)式編程,那么究竟什么是函數(shù)式編程,函數(shù)式編程又有什么優(yōu)點(diǎn),這就在這篇博客進(jìn)行一個(gè)簡單的總結(jié)吧~ 主要內(nèi)容: 函...
摘要:通常一個(gè)完成的不僅僅包含了還包括了以及相關(guān)版本該版本在中使用?;谠秃瘮?shù)先行的語言使用基于原型的的繼承機(jī)制,函數(shù)是的第一等公民其他相關(guān)的語言特性編譯型語言把做好的源程序全部編譯成二進(jìn)制代碼的可運(yùn)行程序。 轉(zhuǎn)載請(qǐng)注明出處,創(chuàng)作不易,更多文章請(qǐng)戳 https://github.com/ZhengMaste... 前言:JavaScript誕生于1995年,它是一門腳本語言,起初的目...
摘要:但是,最好使用差異化的類型定義,函數(shù)簽名如下其實(shí)二者說的是同一件事。后者的返回值和初始函數(shù)的返回值相同,即。破壞式更新和函數(shù)式更新的比較三的延遲計(jì)算的設(shè)計(jì)者們?cè)趯⒁霑r(shí)采取了比較特殊的方式。四匹配模式語言中暫時(shí)并未提供這一特性,略。 一、無處不在的函數(shù) 一等函數(shù):能夠像普通變量一樣使用的函數(shù)稱為一等函數(shù)(first-class function)通過::操作符,你可以創(chuàng)建一個(gè)方法引用,...
摘要:面向?qū)ο缶幊桃欢瓮暾膭?chuàng)建類的示例如何創(chuàng)建一個(gè)類,包含有靜態(tài)屬性方法,公有私有屬性方法靜態(tài)私有變量靜態(tài)私有方法安全模式,防止未使用操作符私有變量方法公有屬性,方法靜態(tài)公有屬性靜態(tài)共有方法使用關(guān)閉包定義靜態(tài)私有變量與方法,所有實(shí)例創(chuàng)建過程中都 面向?qū)ο缶幊?showImg(https://segmentfault.com/img/bVbeqQd?w=2516&h=534); 一段完整的創(chuàng)...
閱讀 2122·2023-04-26 00:50
閱讀 2494·2021-10-13 09:39
閱讀 2229·2021-09-22 15:34
閱讀 1623·2021-09-04 16:41
閱讀 1350·2019-08-30 15:55
閱讀 2445·2019-08-30 15:53
閱讀 1717·2019-08-30 15:52
閱讀 755·2019-08-29 16:19