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

home2 게시판 JavaScript, TS 게시판 ES6 신문법 - 변수 연습문제 6개 질문

ES6 신문법 - 변수 연습문제 6개 질문

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

    오율산
    참가자
    해당 문제 해설을 제가 잘 이해한건지 알고싶어 작성했습니다.
    
    for (var i = 1; i < 6; i++) {
      setTimeout(function() {
        console.log(i);
      }, i * 1000);
    }
    
    위의 코드처럼 반복문의 변수 선언에 var 키워드를 사용하면, 블록 스코프가 아닌 var 키워드는 전역 변수가 되서 반복문이 실행될 당시에는 i의 값이 정상적으로 올라가지만 setTimeout 함수때문에 시간이 흐르고 내부의 console.log(i); 코드를 실행시킬 때는 이미 전역변수로 선언된 i가 5가 되어버려서 전역변수인 i를 참조하게 되고
    
    for (let i = 1; i < 6; i++) {
      setTimeout(function() {
        console.log(i);
      }, i * 1000);
    }
    
    위의 코드처럼 반복문의 변수 선언에 let을 사용하면 실행되는 모습을 구현하게 된다면
    i = 1인 경우
    let i = 1;
    setTimeout(function() {
      console.log(1);
    }, 1 * 1000);
    
    i = 2인 경우
    let i = 2;
    setTimeout(function() {
    console.log(2);
    }, 2 * 1000);
    
    이렇게 반복문이 5회 실행되는 동안 i 변수를 계속 선언하고 초기화 후 할당해서 반복문 내에 몰래 집어 넣게 되는건가요?
    
    제가 작성하고도 뭔가 아리송하네용
    #84323

    codingapple
    키 마스터
    넴 각각의 setTimeout 주변에 let i 변수가 기록되어서 
    i 값이 필요할 때 기록된 그거 가져다가 씁니다
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 호 / 개인정보관리자 : 박종흠