메뉴 건너뛰기

2017.04.05 19:17

8장 실습문제 7번

조회 수 695 댓글 5

질문이 많아서 죄송합니다..

 

 

 

function change(obj){
    obj.style.transform="rotate("+n+"deg)";
    n+=90;

}

 

저는 코드를 이렇게 작성하였는데 (가독성을 위해 변수명칭은 동일하게 바꾸었습니다.)

function rotate(obj) {
    obj.style.transform = "rotate(" + n + "deg)";
    n += 90;
    n %= 360;
}

답안지에는

n%=360; 

코드가 포함되어있습니다.

 

제가 작성한 코드 역시 문제없이 잘 되는데

n%=360; 코드를 넣어둔 이유가 뭘까요 ?

 

 

?
  • profile
    관리자 2017.04.05 20:07

    ㅋㅋ아니에요 열공하시네요!

    우선 n %= 360의 의미를 생각해보자면 n을 360으로 나눈뒤 그 나머지를 n에 다시 대입한다는 뜻이죠.
    따라서 rotate() 메소드가 호출될 때마다 n에 90이 추가되다가, 360이 넘는 순간 다시 0부터 시작되게 됩니다. (0, 90, 180, 270, 0, 90, 180, 270, ...)

    이 부분이 없다면 n은 어떻게 될까요? 0부터 90씩 계속해서 증가하게 될 것입니다. (0, 90, 180, 270, 360, 450, ...)
    그런데 어짜피 360도는 한바퀴 돌리는 거랑 똑같으니까 450도나 90도나 똑같은 것 같죠? 굳이 n %= 360을 해주어야 하나 싶기도 하구요.

    결과만 보자면, 최종적으로 출력되는 모양은 동일합니다. 하지만 변환 과정에 조금 차이가 있습니다.
    브라우저는 회전 변환을 처리할 때, 입력된 각도를 모두 적용시킵니다. 즉 90도는 90도 만큼만, 450도는 한바퀴를 돌리고 다시 90도를 돌립니다.
    만약에 입력각도를 36000으로 주었다면 출력은 마치 회전이 없었던 것처럼 나타나게 되지만, 내부적으로 브라우저는 입력값인 36000을 처리하기 위해 100바퀴를 돌립니다.

    스타일시트에
    img {
    transition: transform 1s;
    }

    를 추가하셔서 결과를 확인해보시면 좀더 직관적으로 이해가 가능할 것 같습니다.
    파이팅!

  • ?
    은성 2017.04.05 22:10
    와 감사합니다!!
    확실히 눈으로 확인을 해보니까 이해가 되네요!
    나머지 값을 왜 대입시키는가 했는데
    내부적인 부분을 고려하지 못했습니다 ㅎㅎ..
    덕분에 쉽게이해했습니다!
  • ?
    . 2020.06.12 16:38
    혹시 n+=90이 무슨의미인가요? n=90으로 하면 실행이 되지 않아서요..
  • ?
    김사영 2020.06.12 17:21
    각도를 표현하는 'n'값에 90deg를 더한 값을 다시 대입하는 겁니다. 즉, 이미지의 회전 각도를 저장하고 있는 변수에 다음 회전할 각도를 저장하는 코드인거죠
  • ?
    성인 2021.11.05 00:21
    위의 문제에서 궁금한 점이 있는데 rotate(" + n + "deg)안에 " +n+의 의미가 무엇인지 궁금합니다.

QnA

공부하면서 궁금했던 것을 질문해보세요.

List of Articles
번호 제목 글쓴이 날짜 조회 수
공지 읽어주세요! 연습문제 및 실습문제 정답 공개에 관한 공지입니다. file 관리자 2017.06.20 18283
203 Page 396 script 위치 관련 질문 드립니다 2 질문드립니다 2020.11.05 154
202 p.583 4번 질문드립니다. 6 열심히 공부하는 독자 2020.09.14 287
201 p.524 쿠키 질문드립니다. 2 열심히 공부하는 독자 2020.09.12 71
200 p.469 실습 5번문제 4 열심히 공부하는 독자 2020.08.29 92
199 p.469 6번 질문드립니다. 4 열심히 공부하는 독자 2020.09.08 64
198 p.296 isNaN 함수 1 yamto 2020.12.28 180
197 p.254 3번문제 질문드립니다. 2 열심히 공부하는 독자 2020.08.14 48
196 p.133 질문이요 1 컴퓨터공학생 2020.08.30 67
195 p.133 질문이요 1 컴퓨터공학생 2020.08.30 74
194 open12 질문드립니다. 3 열심히 공부하는 독자 2020.09.08 111
193 open challenge10 관련 질문드립니다 1 궁금해용 2018.05.16 368
192 open challenge 코드 11 hardworking 2017.03.27 1106
191 Open Challenge 와 실습문제 자료 2 김원상 2017.04.29 7446
190 open challenge 6장 1 aoharu 2018.09.15 622
189 open challenge 05 2 hardworking 2017.03.29 2225
188 open 8 질문 2 열심히 공부하는 독자 2020.08.15 62
187 open 10장 1 sigwq 2018.11.27 448
186 localhost 관련 문의 3 소년정 2018.02.20 4041
185 list type 질문이요 2 file 021 2020.05.03 107
184 length 프로퍼티 2 열공이 2022.05.21 59
목록
Board Pagination Prev 1 ... 6 7 8 9 10 11 12 13 14 15 ... 21 Next
/ 21
위로