• 로그인
  • 장바구니에 상품이 없습니다.

home2 게시판 JavaScript, TS 게시판 var, let 반복문 질문

var, let 반복문 질문

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 글쓴이
  • #9511

    이요셉
    참가자

    제가 이해한 것이 맞는지 질문 드립니다.

    for (let i = 0; i < 5; i++) { setTimeout(function() { console.log(i); }, i*1000 ); }

    0. let의 범위는 중괄호 다.

    1. for문이 i값의 범위 만큼 반복한다. (5번)

    2.  첫번째 반복이 끝나고 let의 범위는 중괄호 니까  i = 0 이 된다.

    3. 두번째 반복이.... i =  1

    4.세번째 반복이..... i = 2

    5. 네번째 반복이..... i = 3

    6. 다섯번째 반복이 ...... i = 4

    7. 반복이 끝나면 내부 함수를 실행 하는데 i값에 맞게 출력 된다.

    그리고 i 를 var 로 선언하면 5가 되는 이유는 실제로는 반복되는 동안 var i = 0 , var i  = 1 ..... 이렇게 반복이 되지만 마지막 값을 재 할당 했기 때문에 5만 보여지는게 맞는건가요?

     

     

    #9513

    codingapple
    키 마스터

    반복문은 반복될 때마다 for 안에 있는 코드가 실행됩니다 그래서

    1회반복시  setTimeout(function() { console.log(i); }, 0*1000 ) 실행

    2회반복시  setTimeout(function() { console.log(i); }, 1*1000 ) 실행

    ...

    인데 

    setTimeout안에 있는 console.log(i)는 반복문 다 끝나고 실행됩니다

    setTimeout은 몇초 후에 내부 코드를 실행해달라고 하는 특수한 함수니까요

     

    암튼 반복문 끝나고 console.log(i) 실행할 때 컴퓨터는 i같은 변수같은게 보이면 i값을 근처에서 찾아서 끼워넣으려고 합니다 

    거기서 이제 let과 var 변수의 차이가 발생합니다 

2 글 보임 - 1 에서 2 까지 (총 2 중에서)
  • 답변은 로그인 후 가능합니다.

About

현재 월 700명 신규수강중입니다.

  (09:00~20:00) 빠른 상담은 카톡 플러스친구 코딩애플 (링크)
  admin@codingapple.com
  이용약관
ⓒ Codingapple, 강의 예제, 영상 복제 금지
top

© Codingapple, All rights reserved. 슈퍼로켓 에듀케이션 / 서울특별시 강동구 고덕로 19길 30 / 사업자등록번호 : 212-26-14752 온라인 교육학원업 / 통신판매업신고번호 : 제 2017-서울강동-0002 호 / 개인정보관리자 : 박종흠