함수 유형 및 패키지 닫기
일반 함수
function a(){
};
익명 함수
var a = function(){
};
이름이 없는 함수:function ();function 키워드를 사용하여 함수를 설명하지만, 함수에 이름을 붙이지 않으면 익명 함수라고 합니다.함수 실행 (function () {...})() 내부적으로 정의된 변수는 외부 변수와 충돌하지 않습니다.
가방을 닫다
패키지를 닫는 의미: 패키지를 닫는 것은 함수의 끼워넣기를 의미하며 내부에서 외부 작용역에 접근할 수 있도록 한다.메모리 상주, 변수 지속화.
function aaa(){
var a=5;
function bbb(){
alert(a);
}
bbb{};
}
이것이 바로 간단한 클러치이자 클러치에 대한 가장 간단한 이해이다.물론 폐쇄는 집행 환경, 활동 대상과 작용역 등 더욱 깊은 이해가 있다.다만 여러분이 이것에 대해 기본적인 이해를 하길 바랍니다.
패킷을 닫는 단점: 함수가 실행되면 자동으로 소각되고 즉시 소각된 함수가 없으면 메모리 유출이 발생합니다.
사용 중에는 일부러 클립을 사용하지 않는 것이 가장 좋다.
연습 문제
function fun(n,o){
console.log(o);
return{
fun:function(m){
return fun(m,n);
}
};
}
var a=fun(0);a.fun(1);a.fun(2);a.fun(3);
var b=fun(0).fun(1).fun(2).fun(3);
var c=fun(0).fun(1);c.fun(2);c.fun(3);
var a의 답은 undefined, 0,0, 0
fun(0)은 첫 번째 fun 함수를 호출했고 n=1, o는undefined이다.fun(1)시 m=1,fun은 외층 함수 n을 닫았고 첫 번째 n=0, 즉 m=1을 호출했으며 내부에서 첫 번째 fun 함수 fun(1,0)을 호출했기 때문에 o는 0이다.fun(2)시 m=2이지만 a.fun을 호출했기 때문에 내부는 1층의fun(2,0)을 호출했기 때문에 o는 0이다.fun(3)동리, 여전히 0;
var b의 답은 undefined, 0, 1, 2입니다.
fun(0)은 첫 번째 fun 함수를 호출했고 o는 여전히 undefined입니다.fun(1)시 m=1,fun은 외부 함수의 n, 즉 m=1, n=0, o를 닫으면 0이다.fun(2)m=2, 현재 fun 함수는 첫 번째 실행 반환 대상이 아니라 두 번째 실행 반환 대상입니다.그리고 두 번째로 1층fun함수를 실행할 때(1,0) 그래서 n=1, o=0, 돌아올 때 두 번째 n을 닫았고 세 번째 3층fun함수를 호출할 때 m=2, n=1, 즉 1층fun함수fun(2,1)을 호출했기 때문에 o는 1이다.fun(3)시 m=3, 세 번째 호출된 n을 닫았습니다. 같은 이치로 최종적으로 첫 번째 fun 함수는fun(3,2)이기 때문에 o는 2입니다.
var c의 답은 undefined, 0,1,1
fun(0)의 o는 여전히 undefined입니다.fun(1)시 m는 1이고 이때 fun은 외부 함수의 n, 즉 처음 호출된 n=0, 즉 m=1, n=0을 닫고 내부에서 첫 번째 fun 함수fun(1,0)을 호출하기 때문에 o는 0이다.fun(2)시 m는 2이고 이때 fun이 패키지를 닫는 것은 두 번째 호출 n=1, 즉 m=2, n=1이며 내부에서 첫 번째 fun 함수 fun(2,1)을 호출하기 때문에 o는 1이다.fun(3)은 같은 이치이지만 두 번째 반환값을 호출하고 최종적으로 1층 fun함수 fun(3,1)을 호출하기 때문에 o는 1이다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.