JavaScript 폐쇄 함수 및 그 역할
1998 단어 JavaScript자바 script
사례:
페이지 에 5 개의 li 라벨 이 있 습 니 다. 라벨 은 0 ~ 45 개의 숫자 를 표시 하고 서로 다른 탭 을 클릭 하여 콘 솔 에서 라벨 의 색인 을 인쇄 합 니 다.
주 코드:
- 0
- 1
- 2
- 3
- 4
var liList=document.getElementsByTagName("li");
for(var i=0;i<liList.length;i++){
liList[i].onclick=function(){
console.log(i);
}
}
주요 설명:
너 라면 이렇게 쓰 지 않 을 까?
이렇게 쓰 면 그 탭 을 누 르 든 숫자 '5' 가 인쇄 되 어 있 음 을 알 수 있 습 니 다.클릭 동작 을 실행 할 때 for 순환 이 완료 되 었 고 i 값 은 '5' 이기 때 문 입 니 다.그러면 어떻게 해야만 매번 순환 할 때 i 가 시스템 에 의 해 회수 되 지 않도록 저장 할 수 있 습 니까?가방 을 닫 아 라!
코드 수정:
- 0
- 1
- 2
- 3
- 4
var liList=document.getElementsByTagName("li");
for(var i=0;i<liList.length;i++){
liList[i].onclick=(function(j){
return function(){
console.log(j);
}
})(i);
}
코드 설명:
두 함수 가 끼 워 넣 으 면 내부 함수 가 외부 함수 의 변수 나 파 라 메 터 를 사용 하면 패 킷 이 됩 니 다.패 킷 이 형 성 된 후 내부 함수 의 변 수 는 대응 하 는 함수 메모리 에 저장 되 며 위의 코드 에서 내부 함수 변 수 는 제때에 제거 되 지 않 습 니 다.
2. 패키지 의 정의
1. 함수 내장 함수
2. 내부 함수 접근 호출 외부 함수 변수 나 매개 변수 (매개 변수 나 변 수 를 메모리 에 장기 저장)
3. 폐쇄 적 역할
1. 공유 변수 구현 (함수 누산기)
function add(){
var num = 0;
function a(){
console.log( ++ num);
}
return a;
}
var myadd = add();
myadd();// 1
myadd();// 2
myadd();// 3
2. 캐 시 가능 (저장 구조) 3. 패 키 징, 속성 민영화 (민영화 변수) 를 실현 할 수 있 습 니 다.
function Deng(name,wife){
var prepareWife = "xiaozhang";
this.name = name;
this.wife = wife;
this.divorce = function(){
this.wife = prepareWife;
}
this.changePrepareWife = function(target){
prepareWife = target;
}
this.sayPrepareWife = function(){
console.log(prepareWife);
}
}
var deng = new Deng('deng','xiaoliu');
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
기초 정리 - 1문자 (String) 숫자 (Number) 불린 (Boolean) null undefined 심볼 (Symbol) 큰정수 (BigInt) 따옴표로 묶어 있어야 함 Not-A-Number - 숫자 데이터 / 숫자로 표...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.