inflearn logo
강의

Course

Instructor

The new standard for web animation, Web Animations API

section04 - 각각의 객체에 개별 애니메이션 적용하기

461

ReKoding

15 asked

0

선생님 안녕하세요 !

강의를 듣는 중 궁금한 점이 있어 질의 드립니다.

section04 - 각각의 객체에 개별 애니메이션 적용하기 영상에서

let bar를 for문 밖에 선언하고 for문 안에서 document.createElement를 할당한 이유가 있을까요?

for문 안에 같이 선언하면서 할당하는 코드와 어떤 부분이 다른지 잘 모르겠어서 질의 드립니다.

 

const bars = [];
let bar;
for(let i = 0; i < 30; i++){
            bar = document.createElement('div');
            bar.classList.add('bar');
            barContainer.appendChild(bar);
            bars.push(bar);
        }

HTML/CSS javascript 인터랙티브-웹 frontend web-animations-api

Answer 3

0

lji941001

imageTop + imageHeight - window.innerHeight;


이 부분이 왜 스크롤 하단에 닫는 부분인지 이해가 너무 안가요 ㅠㅠ

0

studiomeal

  1. 그릇(변수)을 한번만 만들어 놓고 여러번 재활용해서 쓸건지,

  2. 그릇을 매번 새로 만들지


    선택의 문제랍니다. for문 밖에서 선언하는 것은 1번이고, for문 안에서 선언하는게 2번입니다.
    워낙 연산이 적은 동작이라 사실 어떻게 하셔도 무방하긴한데, 예전부터 반복문 안에서 변수를 선언하는게 안티패턴으로 알려져있기는 합니다. 크게 신경쓰지는 않으셔도 될 것 같아요!

0

stu

강사님이 더 자세하게 답변 주시겠지만, 그냥 넌지시 언급하고 가면,

 

let bar를 반복문 안에서 선언하는 대신에, 바깥에 선언한 이유는 변수의 스코프와 생존 기간 때문입니다. 반복문 안에서 변수를 선언하면 매 반복마다 변수가 재선언되고 초기화되기 때문에, 반복문이 끝날 때까지 변수에 마지막 반복에서의 값만 남게 됩니다. 하지만 반복문 외부에서 변수를 선언하면, 반복문 내에서 생성한 모든 bar 엘리먼트들을 배열에 저장하고 나중에 사용할 수 있습니다.

만약 반복문 안에서 let bar를 선언한다면,

const bars = [];
for (let i = 0; i < 30; i++) {
    let bar = document.createElement('div');
    bar.classList.add('bar');
    barContainer.appendChild(bar);
    bars.push(bar);
}

각 반복에서 bar 변수가 새로 선언되므로, 반복이 끝날 때마다 이전 반복에서 만들어진 bar 변수는 사라지게 됩니다. 그래서 bars 배열에는 모든 반복에서의 bar 엘리먼트가 저장되지 않고, 마지막 반복에서 만들어진 bar 엘리먼트 하나만 저장될 것입니다.

하지만 반복문 외부에서 let bar를 선언하면,

const bars = [];
let bar;
for (let i = 0; i < 30; i++) {
    bar = document.createElement('div');
    bar.classList.add('bar');
    barContainer.appendChild(bar);
    bars.push(bar);
}

한 번만 선언되기 때문에, 반복문 내에서 생성한 모든 bar 엘리먼트들이 bars 배열에 추가될 수 있습니다. 따라서 모든 반복에서 만들어진 bar 엘리먼트가 배열에 저장되어 나중에 사용할 수 있습니다.

0

ReKoding

답변 감사합니다.

근데 bar 변수로 만든 element를 bars라는 배열에 넣어 bars 배열을 사용하는게 목적인거 같아보이는데, let bar를 for문 밖에 한번 선언하고 foR문으로 돌면서 매회 값을 새로 할당하더라도 마지막에 bar 변수 하나만 남지 않나요?

또 bars 배열에 푸쉬하여 for문으로 만들어 놓은 element를 사용하는게 목적이라면

for문이 돌고 난 후 bar 값이 변하는건 외부에 선언하나 내부에 선언하나 상관 없는거 아닌가요?

 

제가 잘못 이해 한 부분이 있으면 답변 해주시면 감사하겠습니다.

Json 플러그인 사용시 variable collection 없음

0

12

1

배리어블 목록 없음

0

21

3

Token 등록 방법 문의

0

18

1

3강 질문

0

15

1

스크롤 이미지 영역 넘어갈시 가로로 스크롤이 안되여

0

133

1

vscode에서 svg파일 불러오기 질문

0

3763

1

모바일 화면 최적화 방법 질문드립니다!

0

229

1

key.svg 이미지

1

209

1

Vue.js 적용 방법

0

278

1

강사님 vscode 폰트와 색상이 뭔가요

0

648

2

2:20분 이해가 가지 않습니다.

0

284

1

web animation api를 통한 apple page

0

490

2

리액트에서 scroll-timeline.js 불러오는 법

0

726

1

특정 시점에 자바스크립트 호출은 어려울까요?

0

320

2

scroll-timeline.js 를 사용한 ScrollTimeline 실행 시, easing 효과?

0

736

2

scroll-timeline.js 파일

0

544

1

선생님 Section4에 제목 오타난것같습니다!

0

389

1

keyframeEffect를 찾을 수 없다고 나와요

0

504

1

제이쿼리 animate()와는 다른걸까요?

0

402

1

scroll-timeline.js 파일을 cdn으로 불러 올 수 없을까요??

0

559

1

넓이를 %로 적용하긴 어려울까요?

0

434

2

scrollTimeline polyfill 에 관해서

0

812

1

아직 강의를 보진 않았는데

2

575

1

이 플러그인은 지원되지 않습니다. 어떻게 해결해야 되나요?

0

1151

2