
【計】 impure function
blame; evildoing; have to; non-; not; wrong
【計】 negate; NOT; not that
【醫】 non-
pure; ******
function
【計】 F; FUNC; function
在計算機科學領域,"非純函數"(Impure Function)指代一類具有可變狀态或外部依賴關系的函數。根據MDN Web Docs的定義,這類函數在程式執行過程中可能産生副作用(side effects),包括但不限于修改全局變量、執行I/O操作或改變輸入參數等行為。其核心特征表現為:輸出結果不僅取決于輸入參數,還受運行時環境狀态的影響。
與純函數(Pure Function)的關鍵區别在于,非純函數違反了引用透明性原則(Referential Transparency)。具體表現為三個核心特征:
在工程實踐中,非純函數常用于需要與現實世界交互的場景,例如用戶界面更新、日志記錄等操作。但需注意過度使用會導緻代碼可測試性降低,這點在《代碼整潔之道》中有詳細論證。
非純函數是編程中的一個核心概念,與純函數形成對比。其定義和特點如下:
1. 定義與核心特點
非純函數指在運算過程中可能産生副作用(Side Effects)或依賴外部狀态的函數。其輸出不僅由輸入參數決定,還會受外部環境或内部狀态變化的影響。例如:
let count = 0;
function increment() {
count++; // 修改外部變量(副作用)
return count;
}
2. 主要特征
new Date()
的返回值隨時間變化)。3. 常見場景示例
console.log()
)。obj.value = 5
)。setTimeout()
或獲取當前時間。4. 優缺點分析
5. 使用建議
盡量将非純函數與純函數分離,例如通過封裝副作用代碼、采用函數式編程模式(如Redux中的Reducer需保持純淨)。在需要副作用的邏輯中(如UI更新、數據持久化),明确标注非純函數以提高代碼可維護性。
【别人正在浏覽】