国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

現(xiàn)代JS名詞概念系列——函數(shù)的純潔性【龜速翻譯】

you_De / 798人閱讀

摘要:原文函數(shù)的純潔性純函數(shù)非純函數(shù)副作用純函數(shù)一個函數(shù)返回的值只取決于他輸入的值,并且沒有副作用,那這個函數(shù)就是純函數(shù)。因此,純函數(shù)無法對它的父作用域作出任何修改。更多關(guān)于函數(shù)純潔性的資料

原文:Glossary of Modern JavaScript Concepts: Part 1

函數(shù)的純潔性:純函數(shù)、非純函數(shù)、副作用 純函數(shù)

一個函數(shù)返回的值只取決于他輸入的值,并且沒有副作用,那這個函數(shù)就是純函數(shù)。這樣的函數(shù)只要參數(shù)是一樣的,返回的結(jié)果就永遠只有一個。以下是一個例子:

function half(x) {
  return x / 2;
}

half(x)函數(shù)接受x作為參數(shù),返回x值的一半。如果傳入8,那么返回的一定是4.調(diào)用一個純函數(shù)時,它的結(jié)果可以完全代替這個純函數(shù),例如我們可以用4代替half(8),無論在哪里使用都不會改變這段代碼的最終結(jié)果,這就是純函數(shù)的引用透明性
純函數(shù)只依賴它的參數(shù)。例如純函數(shù)不能引用它父作用域的變量(除非這個變量作為參數(shù)傳入)。因此,純函數(shù)無法對它的父作用域作出任何修改。

// some variable that is mutated
let someNum = 8;

// this is NOT a pure function
function impureHalf() {
  return someNum / 2;
}

總結(jié):

純函數(shù)必定帶參數(shù)

輸入一樣,輸出必定一樣

純函數(shù)只改變內(nèi)部狀態(tài)不改變外部狀態(tài)

純函數(shù)無副作用

純函數(shù)不能調(diào)用非純函數(shù)

非純函數(shù)

非純函數(shù)會改變它作用域外面的狀態(tài)(state)。很多有副作用的函數(shù)都是非純函數(shù)。

// 非純函數(shù)產(chǎn)生副作用
function showAlert() {
  alert("This is a side effect!");
}

// 非純函數(shù)改變外部變量
var globalVal = 1;
function incrementGlobalVal(x) {
  globalVal += x;
}

// 一個裝純的非純函數(shù)
// 他每次返回的值都不同
function getRandomRange(min, max) {
  return Math.random() * (max - min) + min;
}
JavaScript里的副作用

當函數(shù)或表達式修改自己上下文以外的屬性,就是產(chǎn)生了副作用。副作用包括調(diào)用API、操作DOM、調(diào)用alert、數(shù)據(jù)庫操作等。如果一個函數(shù)產(chǎn)生副作用,那么他就是非純的。產(chǎn)生副作用的函數(shù)會改變外部變量,因此讓人捉摸不透,難以測試。

關(guān)于純潔性的總結(jié)

很多高質(zhì)量代碼由調(diào)用純函數(shù)的非純函數(shù)組成。這依然在測試和不變性上很有優(yōu)勢。有引用透明性那么就可以寫成記憶函數(shù):儲存函數(shù)結(jié)果,然后重用之前儲存的結(jié)果。這可以判斷這個函數(shù)是否是純函數(shù)。
更多關(guān)于函數(shù)純潔性的資料

Pure versus impure functions

Master the JavaScript Interview: What is a Pure Function?

Functional Programming: Pure Functions

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/88626.html

相關(guān)文章

  • 翻譯】塑造成功框架哲學

    摘要:我將描述我發(fā)現(xiàn)塑造成功框架的一些哲學。根據(jù)我的框架開發(fā)經(jīng)驗,我特此冷凝和總結(jié)我認為任何成功的框架最重要的哲學。現(xiàn)代框架往往是松散耦合的體系結(jié)構(gòu)。全棧框架例如已經(jīng)演變成由松散耦合的組件可以單獨使用或與第三方交換的框架。 來源:Philosophies that Shaped Successful Frameworks 在過去的十年里我們看到了許多軟件框架的出現(xiàn),像 Spring 和 Ru...

    kgbook 評論0 收藏0
  • 前端每周清單第 10 期:Firefox53、React VR發(fā)布、Microsoft Edge現(xiàn)代

    摘要:新聞熱點國內(nèi)國外,前端最新動態(tài)發(fā)布近日,正式發(fā)布新版本中提供了一系列的特性與問題修復(fù)。而近日正式發(fā)布,其能夠幫助開發(fā)者快速構(gòu)建應(yīng)用。 前端每周清單第 10 期:Firefox53、React VR發(fā)布、JS測試技術(shù)概述、Microsoft Edge現(xiàn)代DOM樹構(gòu)建及性能之道 為InfoQ中文站特供稿件,首發(fā)地址為這里;如需轉(zhuǎn)載,請與InfoQ中文站聯(lián)系。從屬于筆者的 Web 前端入門...

    MingjunYang 評論0 收藏0
  • 簡單易懂ECMA規(guī)范導讀1 that's this

    摘要:本文不是標準的中文翻譯,也不是的入門教程,本文雖然以的常見問題切入,但并不適合想要快速了解這些問題的人才是快速了解問題的正解。盡量以英文原版為基礎(chǔ),為了流暢,可能會使用某些名詞的中文翻譯,但會將匹配的英文名詞以此種樣式中出現(xiàn)一次以避免誤解。 簡單易懂的ECMA規(guī)范導讀1 序 最近混SF,恰巧又逢工作方面有了NodeJS的機會,迫切地有教別人怎么寫JS的需求, 我發(fā)現(xiàn)JS這個東西其實...

    yintaolaowanzi 評論0 收藏0
  • JavaScript系列(四) - 收藏集 - 掘金

    摘要:函數(shù)式編程前端掘金引言面向?qū)ο缶幊桃恢币詠矶际侵械闹鲗Х妒健:瘮?shù)式編程是一種強調(diào)減少對程序外部狀態(tài)產(chǎn)生改變的方式。 JavaScript 函數(shù)式編程 - 前端 - 掘金引言 面向?qū)ο缶幊桃恢币詠矶际荍avaScript中的主導范式。JavaScript作為一門多范式編程語言,然而,近幾年,函數(shù)式編程越來越多得受到開發(fā)者的青睞。函數(shù)式編程是一種強調(diào)減少對程序外部狀態(tài)產(chǎn)生改變的方式。因此,...

    cfanr 評論0 收藏0
  • 前端小知識--TypeSript和JavaScript到底是什么關(guān)系?

    摘要:想學好前端,真的要主動,然后對所有的英文文檔耐心一點。在年月日,國際組織發(fā)布了的第六版,該版本正式名稱為,但通常被稱為或者。自此,每年發(fā)布一次新標準。但保留了用于依賴注入的構(gòu)造函數(shù)參數(shù)類型。必須在構(gòu)造函數(shù)中聲明屬性,而不是在類的代碼體中。 從 TypeScript 到 ES6 到 ES5 在我初學前端的很長一段時間,不愿意碰git,不愿意碰框架,總是嫌麻煩,連ES6也沒有怎么去弄明白...

    sixleaves 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<