사이드 이펙트는 한국어로는 '부작용'이라는 뜻입니다.
Side Effect는 프로그램의 실행 결과에 영향을 주는 모든 동작 또는 변화를 의미합니다.
일반적으로 함수나 메서드 내부에서 발생하는 외부 상태 변경, 외부 자원에 대한 접근, 예외 발생 등을 포함합니다.
Side Effect는 함수의 반환 값 이외에도 프로그램의 상태를 변경하는 것을 의미합니다.
1) 변수 변경
: 함수나 메서드 내에서 전달받은 인자나 외부 변수의 값을 변경하는 것은 Side Effect입니다.
예를 들어, 전달된 배열을 역순으로 정렬하는 함수는 원래의 배열을 변경하므로 Side Effect가 발생합니다.
function reverseArray(arr) {
arr.reverse(); // 원본 배열을 역순으로 변경하는 Side Effect
}
const numbers = [1, 2, 3, 4];
reverseArray(numbers);
console.log(numbers); // [4, 3, 2, 1]
2) 외부 자원에 대한 접근
: 함수나 메서드에서 외부 파일, 데이터베이스, API 등의 외부 자원에 접근하고 수정하는 것은 Side Effect입니다.
예를 들어, 파일을 읽고 내용을 수정하는 함수는 파일 시스템에 대한 Side Effect를 가지게 됩니다.
const fs = require('fs');
function appendToFile(fileName, data) {
fs.appendFileSync(fileName, data); // 파일에 데이터를 추가하는 Side Effect
}
appendToFile('data.txt', 'Hello, World!\n');
3)예외 발생
: 함수나 메서드에서 예외를 발생시키는 것도 Side Effect입니다.
예외를 발생시키면 프로그램의 제어 흐름이 변경되고, 예외 처리가 필요하게 됩니다.
function divide(a, b) {
if (b === 0) {
throw new Error('Divide by zero'); // 예외 발생하는 Side Effect
}
return a / b;
}
try {
const result = divide(10, 0);
console.log(result);
} catch (error) {
console.error('Error:', error.message);
}
Side Effect는 함수 또는 메서드의 동작을 예측하기 어렵게 만들 수 있으므로, 가능한한 Side Effect를 최소화하고 순수한 함수형 프로그래밍의 원칙을 따르는 것이 좋습니다.
순수한 함수는 동일한 인자에 대해 항상 동일한 결과를 반환하고, 외부 상태를 변경하지 않으며, Side Effect가 없는 함수입니다.
이는 프로그램의 예측 가능성과 유지 보수성을 향상시킬 수 있습니다.
| [FE 45] _23.06.01 _ Day 36 ([Web Server] 기초) (0) | 2023.06.01 |
|---|---|
| [FE 45] _23.05.31 _ Day 35 ( [React] 클라이언트 Ajax 요청) (0) | 2023.05.31 |
| [FE 45] _23.05.26 _ Day 33 ([HTTP/네트워크] 실습) (0) | 2023.05.26 |
| [FE 45] _23.05.25 _ Day 32 ([HTTP/네트워크] 실습) (0) | 2023.05.25 |
| [FE 45] _23.05.24 _ Day 31 ([HTTP/네트워크] 기초) (0) | 2023.05.24 |