JavaSript 고급 프로그래밍 - 제7장 학습노트
7.1 귀속
function factorial(num){
if(num <= 1){
return 1;
} else {
return num * arguments.callee(num - 1);
}
}
var anotherFactorial = factorial;
factorial = null;
alert(anotherFactorial(4)); // output 24
7.2 패키지 닫기
일반 프런트엔드 전체 - JavaScript 클로즈업 상세 정보
패키지 기능
폐쇄의 정의 및 장단점
중첩 함수의 패키지
function aa(){
var a=1;
return function(){
alert(a++);
};
}
var fun = aaa();
fun();// 1 a++,, a ~
fun();// 2
fun = null;//a !
패키지를 닫으면 변수가 항상 메모리에 저장되고 사용하지 않으면 메모리 소모가 증가합니다.
javascript의 쓰레기 회수 원리
패키지 사용의 이점
==== 글로벌 변수의 누적 ===
var a = 1;
function abc(){
a++;
alert(a);
}
abc(); //2
abc(); //3
== 로컬 변수 ==
function abc(){
var a = 1;
a++;
alert(a);
}
abc(); //2
abc(); //2
그러면 어떻게 해야만 변수 a가 국부 변수이자 누적될 수 있습니까?
국부 변수의 누적
function outer(){
var x=10;
return function(){ //
x++;
alert(x);
}
}
var y = outer(); // y;
y(); //y , 11, outer()();
y(); //y , 12,
모듈화 코드, 전역 변수 오염 감소
function aa(cout){
for(var i=0;i
예를 들어 for순환을 정의했다. 블록급 작용역이 있는 언어에서 순환이 끝나면 i는 삭제되지만 js, 변수 i는 aa()의 활동 대상에 정의되어 함수 내부 곳곳에서 접근한다.
function aa(count){
(function(){
//
for(var i=0;i
위에서 언급한 바와 같이 for순환 외부에 개인 작용역을 삽입하여 익명 함수에 정의된 모든 변수는 실행이 끝난 후에 삭제됩니다.
개인 작용역을 창설함으로써 모든 개발자는 자신의 변수를 사용할 수 있을 뿐만 아니라 전체 작용역을 혼란시킬 염려도 없다.예:
(function(){
var now=new Date();
if(now.getMonth()==0&&now.getDate()==1){
alert("Happy new year");
}
})();
개인 변수:
함수에 정의된 모든 변수는 개인 변수라고 할 수 있다.함수 외부에서는 이 변수에 접근할 수 없기 때문이다.사유 변수와 사유 함수에 접근할 권리가 있는 공유 방법을 특권 방법이라고 한다.
function MyObject(){
//
var privateVariable = 10;
function privateFunction(){
return false;
}
//
this.publicMethod = function(){
privateVariable ++;
return privateFunction();
}
}
정적 개인 변수
(function(){
var privateVariable = 10;
function privateFunction(){
}
Myobject = function(){
}
// /
Myobject.prototype.publicMethod = function(){
privateVariable ++;
return privateFunction();
}
})()
이 모델은 개인 작용역을 만들고 그 중에서 구조 함수와 상응하는 방법을 봉인했다.
this 대상:this 대상은 실행할 때 함수를 기반으로 하는 실행 환경에 귀속됩니다. 전역 함수에서this는 윈도우와 같고, 함수가 특정한 대상의 방법으로 호출될 때this는 그 대상과 같습니다.그러나 익명 함수의 실행 환경은 전역적이기 때문에 대상은 보통 윈도우를 가리킨다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.