자바스크립트닷 인포로 공부하기

자바스크립트닷 인포로 공부하기#22

hyotoshi 2024. 8. 14. 21:19

저번주의 예상과 다르게 이번주 금요일 무려 직원들 전체 휴무여서 오늘 공부하러왔다!!

칭찬한다 이효정!!!

 

--

 

지난주에 증감연산자 까먹은거 다시 보고왔다.

그리고 지난주 과제 다시풀어보기!!!(어차피 까먹었으니까)

 

여기서 let i = 3;을 초기값이라고 생각하면 이해하기 쉽다.(나는 이렇게 생각을 안해서 i는 무조건 3이 아닌가? 이런생각이 들었다. 즉, 괄호 안의 i는 계속 3이어야 하는게 아닌가 라는 생각을 한것)

i--가 실행되면 i값도 바뀌기 때문에 저 코드가 실행이 된 후 결과적으로 i=0이된다.

while안의 괄호도 순서대로 3,2,1,0이 되기 때문에 0일때는 alert이 실행되지 않으니 3,2,1만 출력이 된다.

이렇게라도 설명해놓지 않으면 나중에 까먹기때문에 내가 이해한거 자세히 적어두기;;

 

질문의 요지 = 같은 값을 출력하냐 안하냐

1번의 ++i는 1부터 시작. (1,2,3,4 < 5)가 true이기 때문에 5까지 못가고 1,2,3,4로 출력.은 이해를 했는데 2번째는 왜 1,2,3,4,5가 나오는지 이해가 도저히 안가서 gpt한테 물어봤다.

와 진짜.. 왼쪽에서 오른쪽으로 실행된다는 것을 머릿속에 세뇌시켜놔야 한다.

 

미래의 나야.. 다시 읽으면 이해해라.

코드는 왼쪽에서 오른쪽으로 실행.

let i = 0;

while(i++ < 5) console.log(i); 일 때,

i++는 0+1이다. 즉 while안의 괄호는 0<5(true)이기 때문에 실행이 되지만, 그 순간 i++가 1이 되기 때문에 console.log(i)의 i는 1이 된다.

즉, while(0 < 5)일 때 console.log(1) 실행.

while (1 < 5)일 때 console.log(2) 실행.

while (2 < 5)일 때 console.log(3) 실행.

while (3 < 5)일 때 console.log(4) 실행.

while (4 < 5)일 때 console.log(5) 실행. -> 이 때도 while의 i는 아직 4인것이다.

while (5 < 5)일 때 console.log는 5<5가 false이기 때문에 실행이 멈춘다.

 

휴~~~~ 드디어 이해했다. 즉 결론은 다르다!!!

미래의 내가 보면 과연 이해할까!!!!!!

 

해답 보는데 진짜 개어렵게 설명함 ㅋㅋㅋㅋ

이거보면서 공부하는 내가 대단하다

 

이거는

이거를 생각하면서 풀어야 한다.

 

이번에도 똑같이 "같은 값을 출력할까요?" 문제이다.

 

1번은 i가 0이고, 0 < 5가 ture이기 때문에 alert에 0이 출력되고 i++가 실행된다.

이런식으로 하면 정답은 0,1,2,3,4가 출력된다.

2번도 똑같이 i가 0이고, 0 < 5가 ture이고 alert에 0이 출력되는 것으로 시작.

그 다음 ++i가 출력되는데, 결과적으로 둘 다 똑같이 1이 된다. 그래서 똑같이 0,1,2,3,4가 출력되고 5는 출력되지 않는다..

 

즉 정답은 같다!!!!!!!!!

 

와 머리가 맑아지는 느낌이다.

역시 제대로 이해하고 넘어가야대..

 

이거는 나머지연산자랑 continue를 사용하면 되는거로 알고있다.

일단.. 내가 직접 짜는건 뇌속에서 이미 무리라고 하고있기 때문에 보면서 해보자!!!

 

지난번에 배웠던 코드를 참고해본다.

이게 지난번에 홀수만 출력되게 하는건데, 한 2분정도 고민하다가 아! 싶었다.

그냥 여기에서 연산자만 제대로 쓰면 짝수로 출력할 수 있는거다!

 

i < 10이면 10까지 출력이 되어야하는데 10까지 출력이 안되니 <=로 바꿔주고,

if문 안에도 i % 2 == 0일 때 continue이니 저거를 !=로 바꾸면 된다!!!!!!

 

즉 이렇게 바꾸면!!!!!!!!!!

0도 출력이 되네..?

여기서 0출력 못하게 어케하지?

 

그건 그냥 i = 0이 아닌 2로 만들면 된다!!!!

와 이걸 내 머리로 생각하다니 레전드 오늘 머리 좀 잘돌아간다 효정아!!!!!!!!1

 

미친감동의쓰나미 ㅠㅠ

정답은!!!

굳이 continue를 안써도 된단다 효정아~~~~~~!!!!

ㅋㅋㅋㅋㅋㅋ않이.. 그래도 정답ㅇㅈ!!!

실행은 되잖어~~ 껄껄!!

 

과제 왤케많아!!!

이것도 차근히 풀어보자.

 

일단 for문 먼저 풀어보자.

let i = 0, i < 3

alert에 0,1,2까지 출력된다.

 

즉 while문으로 0,1,2가 출력되게 하려면

while은 일단 let i = 0;을 초기값으로 선언.

그다음 while (i < 3), 근데 i++를 먼저 출력하면 이미 i가 1이 된 후 alert을 출력하기 때문에 1부터 3까지 출력된다.

출력 순서

while (0 < 3) ture 실행 -> i++ / i가 1이 됨 -> alert에 1 출력 -> while(1 < 3) ture 실행 -> i++ / i가 2가 됨 -> alert에 2 출력 -> while (2 < 3) true 실행 -> i++ / i가 3이 됨 -> alert에 3 출력 -> while (3 < 3) false로 while문 멈춤

 

그렇기 때문에 이걸 0부터 출력시키려면 alert을 먼저 실행시키고 i++가 실행되면 된다.

 

즉, 정답은 이거다!!!!!!!!!!!!

차근차근 공부하면 안될것도 없구나 ㅠㅠ

해답 한번 보자

 

레전드.. 이걸 내머리로 맞추다니.

오늘 ㄹㅇ 공부 잘되는 날인듯?

 

이제 코드 짜는 과제...

이건 아마 break를 사용해야 할 것 같은데...

일단 내가 직접 해보고, 그 다음에 안되면 위에 내용 참고하고, 그래도 안되면 해답 ㄱㄱ

 

도.. 도저ㅏ히 못짜겠어..

진짜 거지같이 짜서 캡쳐하기 부끄럽지만 부끄러움을 이겨내야한다..

 

ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ

쥐어짠 흔적

 

해답...

여기서 멈추자!!

 

그리고 다음주에 do while 다시 배우자..!!!!!!!

아니 금요일에 약속가기 전에 카페에서 공부나 할까 ㅠㅠ

 

아무튼 do while 공부하고 다음주에 다시 풀어준다!!! (정답 안보겠다는 뜻)