[관문 통과 모드] 역할 영역, 체인 과 폐쇄 하
3350 단어 자바 script
전편 [관문 돌파 모드] 역할 영역, 체인 과 폐쇄 중
퀘 스 트 4 종 단 (Closures)
폐쇄 는 JS 에서 매우 중요 한 개념 으로 JS 가 비동기 임 무 를 훌륭하게 완성 하도록 한다.
폐쇄 를 잘 이해 하기 위해 서 우 리 는 먼저 역할 도 메 인 체인 의 예 를 살 펴 보 자.
someFunc()
↑
|
inner()
↑
|
foo()
우 리 는
someFunc()
변수 bar
를 성명 했다 고 말 했다.someFunc()
var bar
↑
⋮
포 함 된 역할 영역 에 대한 지식 이 있 습 니 다. 우 리 는
inner()
방문 할 권리 가 있다 고 말 할 수 있 습 니 다 bar
.someFunc()
var bar
↑
|
inner()
alert(bar)
↑
⋮
inner()
싸 졌 다 고 할 수 있 습 니 다 bar
. 그래서 inner()
는 폐쇄 적 입 니 다.리 셋 식 프로 그래 밍 을 위해 서 는
inner()
즉시 실행 되 지 않 아 도 패 킷 이 유 지 됩 니 다.JS 에서 inner
를 보 내 거나 잠시 후 someFunc()
에서 되 돌아 오 는 것 도 가능 하 며, 이 과정 에서 bar
는 계속 사용 할 수 있 을 것 이다.너의 임무
이전 코드 를 수정 하고 설정
zip()
중의 bar = true
을 설정 한 다음 foo()
에서 zip
return
나 옵 니 다.완성 후 실행
scope-chains-closures verify
으로 당신 의 답 을 검증 합 니 다.미 션 5 쓰레기 수 거 메커니즘 (Garbage Collection)
JS 에 서 는 메모리 가 실 행 될 때 환경 (runtime) 이 자동 으로 관 리 됩 니 다.실행 할 때 환경 이 메모리 의 방출 을 결정 합 니 다.이 결정 과정 을 쓰레기 회수 체제 라 고 한다.
모든 JS 운영 환경 에는 자신의 쓰레기 회수 메커니즘 의 알고리즘 이 있 지만 대부분 사용 하 는 것 은 유사 합 니 다.
&
알고리즘 은 이 알고리즘 의 원 리 는 활동 코드 에 도달 할 수 있 는 메모리 의 인용 (변수, 함수 등) 만 표시 하고 그 어떠한 인용 도 표시 되 지 않 으 면 쓰레기 로 회수 되 는 것 입 니 다. (즉, 이 메모리 가 방출 되 는 것 입 니 다)이 표 시 는 메모리 에 도달 할 수 있다 는 개념 도 어느 정도 폐쇄 와 관련 이 있다.
someFunc()
var bar
return inner
↑
|
inner()
alert(bar)
↑
⋮
폐쇄
inner()
가 someFunc()
return 에 의 해 떨 어 졌 을 때 bar
에 대한 인용 을 유지 했다. 이때 &
알고리즘 은 bar
에 도달 할 수 있 기 때문에 bar
쓰레기 에 의 해 회수 되 지 않 았 다.inner()
에 대해 말하자면 bar
에 대한 인용 을 정확하게 해석 하기 위해 서 는 bar
저 장 된 이 메모 리 를 유지 해 야 할 뿐만 아니 라 bar
에 접근 할 수 있 는 이 역할 체인 을 유지 해 야 한다.inner()
에 대한 인용 이 더 이상 필요 하지 않 으 면 쓰레기 를 회수 할 수 있다. 이것 은 bar
도 쓰레기 에 의 해 회수 되 고 최종 적 으로 모든 역할 도 메 인 체인 이 회수 되 며 메모리 가 방출 된다 는 것 을 의미한다.그 러 니까 역할 영역, 역할 영역 체인, 폐쇄, 쓰레기 회수 체제, 그들 은 모두 밀접 한 관 계 를 가진다!
너의 임무
쓰레기 수 거 메커니즘 의 운행 을 크롬의 개발 자 도구 로 검사 해 야 합 니 다.다음 절차 에 따라 쓰레기 수 거 를 느껴 보 세 요.
1) Chrome 에서 tab 2 를 열 고 개발 자 도구 > Timeline tab 3 를 엽 니 다) 설정 과 아래 그림 이 일치 하 는 지 확인 합 니 다. a) 선택 취소 Frames View (allows seeing memory graphs) b) 선택 한 Flame Chart View (allows seeing where execution time is spent) c) 옵션 에서 "Memory" 4 만 선택 하고 회색 원형 단 추 를 누 르 면 데이터 수집 을 시작 합 니 다 5) 한 사 이 트 를 마음대로 방문 합 니 다
http://www.baidu.com
6) 빨간색 녹화 버튼 을 누 르 면 데이터 수집 을 중단 합 니 다. 7) 다음 그림 을 볼 수 있 습 니 다. 8) 우리 가 주목 해 야 할 것 은 메모리 가 갑자기 줄 어 든 곳 입 니 다. 9) 이 부분 에서 갑자기 줄 어 든 메모리 10) 'GC Event' 라 는 노란색 부분 을 보 세 요. 11) 그리고 회수 한 총 내 저장량 과 시간 소 모 를 볼 수 있 습 니 다.재 미 있 는 것 은 GC 의 시간 소모: 보통 16ms (이것 은 60fps 의 최대 치 를 유지 할 수 있다) 를 훨씬 초과 한 다 는 것 이다.동시에 GC 가 발생 할 때 메 인 스 레 드 를 막 기 때문에 프로그램 이 끊 기 면 대량의 GC 가 일 으 킬 수 있 습 니 다.
참고: 강박 증 이 있 으 면 계속 운행 할 수 있 습 니 다
scope-chain-closures verify
완전무결 하 다번역 이 급 합 니 다. 잘못 이 있 으 면 지적 을 환영 합 니 다!좋아요 누 르 는 게 나 아 요.
부록
관문 통과 프로젝트 주소
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Thymeleaf 의 일반 양식 제출 과 AJAX 제출텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.