이 기사는 주로 일반적인 기능, 익명 함수 및 폐쇄 기능을 소개합니다.
1. 일반 기능 소개
1.1 예
코드 사본은 다음과 같습니다.
함수 showname (name) {
경고 (이름);
}
1.2 JS에서 동일한 이름을 가진 함수 초과 작성
JS에서는 기능이 과부하되지 않습니다. 동일한 기능 이름과 다른 매개 변수 서명으로 함수를 정의합니다. 후속 함수는 이전 기능을 무시합니다. 호출되면 다음 기능 만 호출됩니다.
코드 사본은 다음과 같습니다.
var n1 = 1;
함수 추가 (value1) {
N1 + 1을 반환합니다.
}
alert (add (n1)); // 다음 함수는 호출되고 출력은 다음과 같습니다
함수 추가 (value1, value2) {
반환 값 1 + 2;
}
경고 (Add (n1)); // 출력 : 3
1.3 인수 대상
인수는 c# params와 유사하며, 변수 변수 매개 변수 : 기능에 전달되는 매개 변수의 수는 정의시 매개 변수 수보다 큽니다.
코드 사본은 다음과 같습니다.
함수 shownames (name) {
경고 (이름); // Zhang San
for (var i = 0; i <arguments.length; i ++) {
경고 (인수 [i]); // Zhang San, Li Si, Wang Wu
}
}
Showmes ( 'Zhang San', 'Li Si', 'Wang Wu');
1.4 함수의 기본 범위 값
함수가 반환 값을 지정하지 않으면 기본 반환이 '정의되지 않았다'.
코드 사본은 다음과 같습니다.
함수 showmsg () {
}
alert (showmsg ()); // 출력 : 정의되지 않았습니다
2. 익명 기능
2.1 변수 익명 함수
2.1.1 설명
함수는 변수 및 이벤트에 할당 할 수 있습니다.
2.1.2 예
코드 사본은 다음과 같습니다.
// 변수 익명 함수, 왼쪽은 변수, 이벤트 등이 될 수 있습니다.
var anonymousnormal = function (p1, p2) {
경고 (P1+P2);
}
익명 정상 (3,6); // 출력 9
2.1.3 적용 가능한 시나리오
① 기능 이름 오염을 피하십시오. 먼저 이름으로 함수를 선언 한 다음 변수 또는 이벤트에 할당하면 함수 이름이 남용됩니다.
2.2 이름이없는 익명 기능
2.2.1 설명
즉, 함수가 선언되면 매개 변수를 따릅니다. JS 구문 이이 함수를 파싱하면 내부의 코드가 즉시 실행됩니다.
2.2.2 예
코드 사본은 다음과 같습니다.
(기능 (p1) {
경고 (P1);
}) (1);
2.2.3 해당 시나리오
① 한 번만 실행하십시오. 브라우저가로드되면 나중에 실행되지 않은 함수 만 실행하면됩니다.
3. 폐쇄 기능
3.1 설명
함수 A가 함수 B를 내부적으로 선언하고 함수 B는 함수 B 이외의 변수를 나타내고 함수 A의 반환 값은 함수 B에 대한 참조입니다. 그러면 함수 B는 폐쇄 함수입니다.
3.2 예
3.2.1 예 1 : 글로벌 참조 및 지역 참조
코드 사본은 다음과 같습니다.
function funa () {
var i = 0;
funting funb () {// Closure function funb
i ++;
경고 (I)
}
반환 funb;
}
var allshowa = funa (); // 글로벌 변수 참조 : 누적 출력 1, 2, 3, 4 등
함수 partshowa () {
var showa = funa (); // 로컬 변수 참조 : 출력 1
showa ();
}
Allshowa는 기능 Funa를 참조하는 글로벌 변수입니다. Allshowa ()를 반복하면 1, 2, 3, 4와 같은 축적 된 값을 출력합니다.
로컬 변수 showa 만 Funa를 참조하도록 내부적으로 선언되므로 PartShowa () 함수를 실행하십시오. 실행 후 Showa가 차지하는 리소스는 범위 관계로 인해 출시됩니다.
폐쇄의 열쇠는 범위입니다. 글로벌 변수가 차지하는 리소스는 페이지가 변경되거나 브라우저가 닫힌 후에 만 해제됩니다. var allshowa = funa () 일 때는 funb ()를 언급하는 Allshowa와 동일하므로 Funb ()의 리소스는 GC에 의해 재활용되지 않으므로 funa ()의 리소스는 그렇지 않습니다.
3.2.2 예제 2 : 매개 변수 폐쇄 함수
코드 사본은 다음과 같습니다.
기능 funa (arg1, arg2) {
var i = 0;
기능 funb (단계) {
i = i + 단계;
경고 (I)
}
반환 funb;
}
var allshowa = funa (2, 3); // 호출은 funa arg1 = 2, arg2 = 3입니다
Allshowa (1); // 호출은 funb step = 1, 출력 1입니다
Allshowa (3); // 호출은 funb setp = 3, 출력 4입니다
3.2.3 예 3 : 부모 기능 funa의 가변 공유
코드 사본은 다음과 같습니다.
function funa () {
var i = 0;
함수 funb () {
i ++;
경고 (I)
}
allshowc = function () {// allshowc는 익명 함수를 말하며 변수 i funb와 공유
i ++;
경고 (I)
}
반환 funb;
}
var allshowa = funa ();
var allshowb = funa (); // allshowb 참조 funa, allshowc는 내부적으로 반창고, allshowb와 변수 i를 공유합니다.
3.3 해당 시나리오
external 외부가 Funa 변수에 직접 액세스 할 수 없기 때문에 기능 funa 내부 변수의 보안을 보장합니다.
JavaScript의 기능 기능에 대한 아이디어가 있습니까? 궁금한 점이 있으면 메시지를 남겨주세요.