js function_javascript 스킬의 부작용 분석

WBOY
풀어 주다: 2016-05-16 18:03:14
원래의
944명이 탐색했습니다.

함수의 부작용은 프로그램 설계에 불필요한 문제를 일으키고, 찾기가 매우 어려운 오류를 가져오고, 프로그램의 가독성을 감소시킵니다. 엄격한 함수형 언어에서는 부작용이 없는 함수가 필요합니다.
함수의 부작용과 관련된 여러 개념, 순수 함수, 불순 함수, 참조 투명.
순수 함수(Pure Function)
입력 및 출력 데이터 흐름이 모두 명시적입니다. 명시적이란 함수가 외부 세계와 데이터를 교환하는 방법이 매개변수와 반환 값이라는 단 하나의 방법뿐이라는 의미입니다. 함수가 함수 외부에서 받아들이는 모든 입력 정보는 매개변수를 통해 함수 내부로 전달됩니다. 함수가 함수 외부에 출력하는 모든 정보는 반환 값을 통해 함수 외부로 전달됩니다.
불순함수(Impure Function)
그 반대입니다. 암시적이란 함수가 매개변수와 반환값 이외의 채널을 통해 외부 세계와 데이터를 교환한다는 의미입니다. 예를 들어 전역 변수를 읽거나 수정하는 것을 외부 세계와의 암시적 데이터 교환이라고 합니다.
Reference Transparent(참조 투명)
참조 투명성의 개념은 함수의 부작용과 관련되어 영향을 받습니다. 프로그램의 동작에 영향을 주지 않고 프로그램 내 어디에서나 동일한 값의 두 표현식을 서로 바꿀 수 있다면 프로그램은 참조 투명성을 갖습니다. 참조투명하지 않은 언어의 의미는 이해하기 쉽고 모호함이 적다는 장점이 있습니다. 순수 함수형 언어에는 변수가 없으므로 참조적으로 투명합니다.
다음 예는 참조 투명성과 함수 부작용의 조합을 보여줍니다

코드 복사 코드는 다음과 같습니다.

result1 = (fun(a) b) / (fun(a) -c)
temp = fun(a)
result2 = (temp b) / (temp -c) );

함수에 부작용이 없으면 result1과 result2는 동일합니다. 그러나 fun에 b나 c에 1을 더하는 등의 부작용이 있는 경우 result1과 result2는 동일하지 않습니다. 따라서 부작용은 참조 투명성을 위반합니다.
자바스크립트에는 함수가 도입됩니다. 그러나 분명히 JS의 함수는 다음과 같이 전역 변수(또는 함수 외부에 정의된 변수)에 액세스하고 수정할 수 있습니다.
코드 복사 Code As 다음:

var a = 5;
function fun(){
a = 10;
}
fun();
JS에서 함수가 부작용이 없도록 하려면 프로그래머의 습관에만 의존하면 됩니다. 즉,
1. 함수 항목은 수정하지 않고 매개변수 연산을 사용합니다.
2. 전역변수
3 등 함수 외부의 변수는 내부적으로 수정되지 않으며, 연산 결과는 함수를 통해 외부(exit)로 반환됩니다.
관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿