소위 폐쇄는 다음을 참조해야합니다. 현재 함수, 즉 생성 된 컨텍스트 환경 이외의 변수를 읽는 내부 함수.
코드 사본은 다음과 같습니다.
기능 Hello () {
var char = "안녕하세요, 세계";
함수 print () {
Console.log (char);
};
반환 print ();
}
여기서 인쇄 기능은 외부 헬로 함수의 숯 변수를 나타냅니다. 여기서 우리는 다음을 반환 할 수 있습니다.
코드 사본은 다음과 같습니다.
안녕하세요, 세상
어떤 의미에서,이 기능은 범위에 기인해야합니다. 물론이 변수를 선언 할 때 오류가 없다면 Char에 직접 액세스 할 수있는 방법이 없습니다. 좋다
코드 사본은 다음과 같습니다.
기능 Hello () {
char = "안녕하세요, 세계";
함수 print () {
Console.log (char);
};
반환 print ();
}
var 누락이 있기 때문에.
코드 사본은 다음과 같습니다.
여기서 안녕하세요. 폐쇄는 특별한 대상입니다. 함수와 함수가 생성되는 환경의 두 부분으로 구성됩니다. 환경은 폐쇄가 생성 될 때의 범위의 로컬 변수로 구성됩니다.
자바 스크립트 폐쇄 및 이것
이 글을 읽을 때 문제가있을 수 있다는 점에 유의해야합니다.
코드 사본은 다음과 같습니다.
기능 Hello () {
this.char = "안녕하세요, 세계";
함수 output () {
char = "나는 Hello World가 아닙니다";
Console.log (this.char);
};
return output ();
}
물론,이 예는 충분하지 않습니다. 따라서이 문제를 설명하기위한 추가 예제가 필요합니다. 다음은이 문제를 설명하기 위해 "JavaScript Advanced Programming"의 예입니다.
코드 사본은 다음과 같습니다.
var name = "창";
var 객체 = {
이름 : "내 대상",
getNameFunc : function () {
return function () {
이 this.name;
}
}
};
Object.getNameFunc () () ()
그러나이 사용법은 실제로이며, 솔루션은 이전 기사에서 언급 한 바와 같이 "JavaScript에서 이것에 대한 일부 지식"이라는 임시 변수를 저장하는 것입니다.
코드 사본은 다음과 같습니다.
var name = "창";
var 객체 = {
이름 : "내 대상",
getNameFunc : function () {
var that = this;
return function () {
it. 이름;
}
}
};
Object.getNameFunc () () ()
JavaScript 폐쇄 및 읽기 및 쓰기 변수
변수를 잘 처리하지 않으면 변수를 수정할 수도 있습니다.
코드 사본은 다음과 같습니다.
기능 Hello () {
var char = "안녕하세요, 세계";
반품{
set : function (string) {
rack char = string;
},
인쇄 : function () {
Console.log (char)
}
}
}
var says = hello ();
Say.Set ( 'New Hello, World')
Say.print () // New Hello World
자바 스크립트 폐쇄 및 성능
견적 MDC
코드 사본은 다음과 같습니다.
특정 특수 작업에 클로저가 필요하지 않은 경우, 클로저는 처리 속도 및 메모리 소비를 포함하여 스크립트 성능에 부정적인 영향을 미치기 때문에 필요없이 다른 기능에서 기능을 만드는 것은 현명하지 않습니다.
이 기사도 언급했습니다.
코드 사본은 다음과 같습니다.
예를 들어, 새 개체 또는 클래스를 만들 때 메소드는 일반적으로 객체의 생성자에 정의되지 않고 객체의 프로토 타입과 연관되어야합니다. 그 이유는 이로 인해 생성자가 호출 될 때마다 메소드가 한 번 재 할당되기 때문입니다 (즉, 각 객체의 생성을 위해).