순수함수 vs 불순함수
Pure Function
는 항상 인수에 의존하며 부작용이 없어야 합니다.부작용이란 무엇입니까? ☠️
함수에서 외부 코드를 사용하려고 하거나 변수를 변경하는 경우 부작용이 발생합니다.
예시:
let num = 10
function mul(val) {
return num += val
}
위 스니펫에서 볼 수 있듯이
mul
함수는 num
라는 외부 변수에 종속됩니다. 또한 값을 변경num
하여 불순한 기능을 수행합니다.간단한 예를 하나 더 확인해 보겠습니다.
function hello() {
console.log("Hello Folks!");
}
그렇다면 위의 스 니펫에 대해 어떻게 생각하십니까? 🤔
.
.
.
응! 이것도 불순한 함수입니다 😵💫
JavaScript는 동기식이라는 것을 모두 알고 있듯이 `console`이나 `callback` 또는 `promise/fetch`를 사용하면 함수가 비동기식으로 됩니다.
여기서 Web API인
console
를 사용하면 순수하지 않은 기능이 됩니다.예를 들어 다른 부작용을 확인해 봅시다.
DOM 조작, 콜백 또는 파일 읽기/쓰기
function mul(a,b) {
document.write("Started Multiplication")
return a * b
}
console.log(mul(2,5))
순수 함수에서 전역 변수 업데이트 또는 수정
let x = 10
function mul(a,b) {
document.write("Started Multiplication")
return a * b * x
}
console.log(mul(2,5))
여기에서도 외부 변수에 의존하는 외부 변수를 변경합니다.
let x
function mul(a,b) {
x = 10
return a * b * x
}
console.log(mul(2,5))
부작용에 대한 아이디어를 얻었으므로 Pure 및 Impure 기능을 이해합시다.
순수 함수
불순한 함수
순수한 방법과 불순한 방법
다음은 순수한 방법입니다.
다음은 불순한 방법입니다.
보너스 포인트 🔖
외부 상태를 순수 함수로 복제할 수 있습니다.
외부 상태를 순수 함수로 복제해도 함수가 불순해지지 않습니다.
예시:
let name = ["suprabha", "supi"]
function fullName(newName, name) {
let clonedName = [...name]
clonedName[clonedName.length] = newName
return clonedName
}
console.log(fullName("sumi", name)) // ['suprabha', 'supi', 'sumi']
위 스니펫에서는
...
함수에서 fullName
스프레드 연산자를 사용하고 있습니다. 복제본을 만든 다음 업데이트합니다. 따라서 name
변수에 의존하지 않습니다.게시물을 읽어 주셔서 감사합니다!
이 기사가 도움이 되었기를 바랍니다. 질문이 있으시면 언제든지 댓글 섹션에 남겨주시거나 여기로 저에게 연락해 주세요 👇
🌟
📚 Ebooks
🌟
Reference
이 문제에 관하여(순수함수 vs 불순함수), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/suprabhasupi/pure-vs-impure-functions-3e33텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)