>  기사  >  웹 프론트엔드  >  JS와 함수형 언어의 3가지 특징_기본지식

JS와 함수형 언어의 3가지 특징_기본지식

WBOY
WBOY원래의
2016-05-16 16:56:551070검색

우선 개념이 있습니다. 기능을 지원하는 언어가 아닙니다. 이 언어는 "기능적 언어"라고 부를 수 있습니다. 함수형 언어의 함수에는 호출되는 것 외에도 몇 가지 다른 속성도 있습니다. 다음 세 가지 사항이 있습니다:
1. 함수는 피연산자입니다
2. 함수 내에 데이터를 저장합니다
3. 함수 내 연산은 함수 외부에 영향을 미치지 않습니다
1.
일반 함수가 호출되면 추상적으로 다음과 같이 이해할 수 있습니다. 함수는 연산자이고 전달된 매개변수는 피연산자입니다.
그러나 JavaScript의 함수가 다른 함수의 매개변수로 사용되는 경우; 함수는 참조로 전달되며 이 "들어오는 매개변수"는 피연산자로 이해될 수 있습니다. 결론적으로 함수("들어오는 매개변수")는 피연산자의 의미를 가지며, "함수 매개변수"는 일반 매개변수와 다르지 않습니다.

2. 함수 내 데이터 저장
명령형 언어에서는 함수 내 Private 변수(지역 변수)를 저장할 수 없습니다. 프로그램 실행 관점에서 볼 때 스택에는 지역 변수가 할당되고, 함수 실행이 끝나면 점유된 스택이 해제됩니다. 따라서 함수 내의 데이터를 저장할 수 없습니다.
자바스크립트 함수에서는 함수 내의 프라이빗 변수를 수정할 수 있으며, 다시 함수에 '입력'하면 수정된 상태가 계속됩니다. 다음 예에서는 이 기능을 보여줍니다.

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

var set ,get ;
function MyFunc(){
var value = 100;

함수 set_value(v){
값 = v;
}
함수 get_value(){
반환 값;
}

set = set_value;
get = get_value;
}
MyFunc();
console.log(get()) //100
set(300);
console.log(get()); //300


분명한 이점은 데이터가 함수 내에서 유지될 수 있으면 인스턴스에 할당할 때 함수를 생성자로 사용할 수 있다는 것입니다. 이러한 데이터는 작업을 수행하며 여러 인스턴스 간에 데이터가 서로 다른 클로저에 존재하므로 서로 영향을 미치지 않습니다.
객체 지향 용어로 설명하면, 서로 다른 인스턴스가 고유한 개인 데이터(특정 공개 데이터에서 복사됨)를 갖는다는 의미입니다. 다음 예에서는 이 기능을 보여줍니다.
코드 복사 코드는 다음과 같습니다.

function MyObject () {
var value = 100;
this.setValue = function(){
value = v;
}
this.showValue = function(){
console.log (값 );
}
}
var obj1 = new MyObject();
var obj2 = new MyObject();

obj2.setValue(300);
obj1.showValue(); //100;


3. 함수 내 작업은 함수 외부에 부작용이 없습니다.
This 이 기능의 의미는 다음과 같습니다.
* 입력 매개변수를 사용하여 수정하지 않고 작업을 수행하는 함수(가변 매개변수가 아닌 값 매개변수로 사용됨)
* 함수 외부의 다른 데이터 값은 연산 중 수정 불가(예: 전역 변수)
* 연산 완료 후 "함수 반환"을 통해 해당 값을 외부 시스템으로 전달

이러한 기능은 작동 중 외부 시스템에 부작용이 없습니다. 그러나 JavaScript에서는 함수 내에서 전역 변수를 참조하고 수정할 수 있으며 전역 변수를 선언할 수도 있다는 사실을 발견했습니다. 이는 실제로 기능적 특성을 파괴합니다.
또한 JavaScript를 사용하면 함수 내에서 객체 및 배열 멤버를 수정할 수 있습니다. 이러한 멤버는 객체 시스템 외부의 다른 함수가 아닌 객체 메서드로 수정해야 합니다.
그래서: JavaScript의 이 기능은 개발자의 프로그래밍 습관에 의해서만 보장될 수 있습니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.