▶이동
  • 상구너 닷컴 블로그를 방문하신 여러분을 환영합니다 :)
  • 스팸 정책에 의해 일부 덧글·방명록차단될 수 있습니다.

29살 백수여자의 질문..

Day by day/Diary 상구너(smokingbird) 2018.05.04 12:07




'Day by day > Diary' 카테고리의 다른 글

Diary  (0) 2018.07.03
29살 백수여자의 질문..  (1) 2018.05.04
지금 알고 있는걸, 그때도 알았더라면...  (0) 2014.08.10
신발사야하는데..?  (0) 2014.08.03
예비군 동미참훈련.. 관동교장  (0) 2014.07.21
1 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
  • 도전!
  • 클로저 특성으로, 내부함수에서 외부함수의 지역변수에 접근 할 수 있는데, 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. -> 함수 안의 내부함수나 그 로컬 변수들은 그 외부함수의 밖에서 접근을 못한다. 


    잘못 작성된 코드

    결과

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


    =>

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

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

    고쳐진 코드

    결과


    =>

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


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

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

    클로저(Closure) 의 특성과 응용 그리고 실수  (0) 2017.01.05
    Canvas Context 메소드 확장하기.  (0) 2016.05.10
    _h5ai audio,video autoplay  (0) 2014.09.29
    0 0
  • 공지사항
    중요한 개인정보필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
    스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.