클로저(Closure) 의 특성과 응용 그리고 실수

2017. 1. 5. 15:12·Study/JavaScript

클로저 특성으로, 내부함수에서 외부함수의 지역변수에 접근 할 수 있는데, 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. -> 함수 안의 내부함수나 그 로컬 변수들은 그 외부함수의 밖에서 접근을 못한다. 


잘못 작성된 코드

결과

그러면 왜 5만 5번이 출력이 되었을까?


=>

클로저의 특성인 내부함수에서 외부함수의 지역변수에 접근을 하는것인데 arr[i] 로 정의된 함수에서 사용하는 i는 외부함수의 지역변수가 아니다.

arr[i] 는 i를 리턴하는 함수로만 사용이 되는데, 이 i 가 외부함수의 지역변수가 아니기 때문에 for문을 이미 종료된 상태인 i = 5 인 상황이 되어버리기 때문이다.

고쳐진 코드

결과


=>

for문을 돌때 미리 i를 이용한 외부변수를 실행하여(실행후 소멸됨) 각각 arr[i]는 실행된 외부함수로부터 반환된 내부함수가 되기 때문에 다른방식의 결과가 나오기 때문이다.


참고 https://opentutorials.org/course/743/6544

저작자표시 비영리 변경금지 (새창열림)

'Study > JavaScript' 카테고리의 다른 글

Canvas Context 메소드 확장하기.  (0) 2016.05.10
_h5ai audio,video autoplay  (0) 2014.09.29
'Study/JavaScript' 카테고리의 다른 글
  • Canvas Context 메소드 확장하기.
  • _h5ai audio,video autoplay
상구너(sanguneo)
상구너(sanguneo)
  • 상구너(sanguneo)
    상구너 블로그
    상구너(sanguneo)
  • 전체
    오늘
    어제
    • 분류 전체보기 (43)
      • Day by day (4)
        • Diary (3)
        • TV (0)
      • Challenge (4)
      • Study (23)
        • Linux (6)
        • Java (1)
        • JavaScript (3)
        • BCI&BCEL&ASM (8)
        • Markup (2)
        • WAS (1)
        • DB (1)
        • NodeJS (0)
      • Develop (9)
        • inKrKamus (2)
      • Faith (0)
  • 블로그 메뉴

    • 홈
    • GITHUB
    • LinkedIn
    • 방명록
  • 링크

    • 쏠라담
    • 물빛
  • 공지사항

  • 인기 글

  • 태그

    mWebOSX
    html5
    곡선좌표
    MWeb
    닷지웹
    Canvas
    lineBreak
    fillText
    베지에
    mWebMac
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
상구너(sanguneo)
클로저(Closure) 의 특성과 응용 그리고 실수
상단으로

티스토리툴바