什么是純函數

定義:純函數是指不依賴于 且 不改變 它作用域之外的變量狀態的函數。


也就是說,純函數的返回值只由它調用時的參數決定,它的執行不依賴于系統的狀態(比如:何時、何處調用它。

例子:

例1:

非純函數:

var values = { a: 1 };?

function impureFunction ( items ) {?

? ? ? ?var b = 1;???

? ? ? ?items.a = items.a * b + 2;??

? ? ? ?return items.a;

}

?var c = impureFunction( values );// 現在 `values.a` 變成 3。impureFunction 改變了它,所以不純。

純函數:

var values = { a: 1 };

?function pureFunction ( a ) {?

?????????var b = 1;??

?????????a = a * b + 2;??

?????????return a;

}

?var c = pureFunction( values.a );

// `values.a` 沒有被改變, 它的值仍然是 1


例2:

非純函數:

var values = { a: 1 };

var b = 1;?

function impureFunction ( a ) {?

? ? ? a = a * b + 2;???

? ? ? return a;

}?

var c = impureFunction( values.a );

// c 的值依賴于外部變量 b

// 你可能容易忽略這種情況,外部變量的變化也可能會導致函數出現不確定結果。

純函數:

var values = { a: 1 };

var b = 1;?

function pureFunction ( a, c ) {?

????????a = a * c + 2;???

????????return a;

}

?var c = pureFunction( values.a, b );

// 這樣從定義上明確 `c` 依賴于參數 `b`,避免函數不確定結果。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容