우선 개념이 있습니다. 기능을 지원하는 언어가 아닙니다. 이 언어는 "기능적 언어"라고 부를 수 있습니다. 함수형 언어의 함수에는 호출되는 것 외에도 몇 가지 다른 속성도 있습니다. 다음 세 가지 사항이 있습니다:
1. 함수는 피연산자입니다
2. 함수 내에 데이터를 저장합니다
3. 함수 내 연산은 함수 외부에 영향을 미치지 않습니다
1.
일반 함수가 호출되면 추상적으로 다음과 같이 이해할 수 있습니다. 함수는 연산자이고 전달된 매개변수는 피연산자입니다.
그러나 JavaScript의 함수가 다른 함수의 매개변수로 사용되는 경우; 함수는 참조로 전달되며 이 "들어오는 매개변수"는 피연산자로 이해될 수 있습니다. 결론적으로 함수("들어오는 매개변수")는 피연산자의 의미를 가지며, "함수 매개변수"는 일반 매개변수와 다르지 않습니다.
2. 함수 내 데이터 저장
명령형 언어에서는 함수 내 Private 변수(지역 변수)를 저장할 수 없습니다. 프로그램 실행 관점에서 볼 때 스택에는 지역 변수가 할당되고, 함수 실행이 끝나면 점유된 스택이 해제됩니다. 따라서 함수 내의 데이터를 저장할 수 없습니다.
자바스크립트 함수에서는 함수 내의 프라이빗 변수를 수정할 수 있으며, 다시 함수에 '입력'하면 수정된 상태가 계속됩니다. 다음 예에서는 이 기능을 보여줍니다.
함수 set_value(v){
값 = v;
}
함수 get_value(){
반환 값;
}
set = set_value;
get = get_value;
}
MyFunc();
console.log(get()) //100
set(300);
console.log(get()); //300
obj2.setValue(300);
obj1.showValue(); //100;
이러한 기능은 작동 중 외부 시스템에 부작용이 없습니다. 그러나 JavaScript에서는 함수 내에서 전역 변수를 참조하고 수정할 수 있으며 전역 변수를 선언할 수도 있다는 사실을 발견했습니다. 이는 실제로 기능적 특성을 파괴합니다.
또한 JavaScript를 사용하면 함수 내에서 객체 및 배열 멤버를 수정할 수 있습니다. 이러한 멤버는 객체 시스템 외부의 다른 함수가 아닌 객체 메서드로 수정해야 합니다.
그래서: JavaScript의 이 기능은 개발자의 프로그래밍 습관에 의해서만 보장될 수 있습니다.