29살 백수여자의 질문..
Day by day/Diary
2018. 5. 4. 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 |
중요한 개인정보는 필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
도전!
클로저(Closure) 의 특성과 응용 그리고 실수
Study/JavaScript
2017. 1. 5. 15:12
클로저 특성으로, 내부함수에서 외부함수의 지역변수에 접근 할 수 있는데, 외부함수의 실행이 끝나서 외부함수가 소멸된 이후에도 내부함수가 외부함수의 변수에 접근 할 수 있다. -> 함수 안의 내부함수나 그 로컬 변수들은 그 외부함수의 밖에서 접근을 못한다.
잘못 작성된 코드
결과
그러면 왜 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 |
중요한 개인정보는 필요한 경우가 아닌 경우 적지 마시고, 적으셨다면 비밀글 설정을 꼭 해주시기 바랍니다.
스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.
스팸 필터 정책에 의해 영문만으로 작성된 글이나 무의미한 내용의 글은 등록이 되지 않을 수도 있습니다.