純函數的特點:
- 對于同一參數,返回同一結果
var squareNumber = memoize(function(x) {
return x * x;
});
squareNumber(4);
//=> 16
squareNumber(4); // returns cache for input 4
//=> 16
squareNumber(5);
//=> 25
squareNumber(5); // returns cache for input 5
//=> 25
- 結果完全取決于傳入的參數
- 不產生副作用
函數副作用是指函數在正常工作任務之外對外部環境所施加的影響。
函數副作用是指函數被調用,完成了函數既定的計算任務,但同時因為訪問了外部數據,尤其是因為對外部數據進行了寫操作,從而一定程度地改變了系統環境。
函數的副作用也有可能是發生在函數運行期間,由于對外部數據的改變,導致了同步運行的外部函數受到影響。