[JavaScript 기초] 3. 반복문 복습 퀴즈

Hyun Jin·2022년 12월 19일
0

JavaScript

목록 보기
6/20
post-thumbnail
  1. 다음 for 반복문에 대한 설명 중 틀린 것은?
for(let i = 0; i <= 3; i++) {
  console.log(i)
}
  1. 초기값은 0이다.
  2. 해당 for 문은 결과를 총 4번 출력한다.
  3. i는 내부의 코드가 한 번 실행될 때마다 1씩 증가한다.
  4. i = 4 가 되면 반복문이 종료된다.
  1. 다음 for 반복문에 대한 설명 중 틀린 것은?
	let str = 'xmas is comming soon';
	for (let i = 0; i < str.length; i++) {
		if ( i % 2 === 1) {
			console.log(str[i]);
		}
	}
  1. str[4] 의 값은 공백이다.
  2. str[str.length-1] 의 값은 undefined 이다.
  3. 변수 str 의 길이(length) 는 20이다.
  4. 마지막으로 출력되는 문자열은 'n'이다.
  1. 이중반복문으로 구구단 전체를 출력하는 코드를 구현하시오.
  1. 발사 카운트다운 출력하기(MDN - Looping code 예제)

let i = 10;
만약 숫자가 10이면, 단락에 "Countdown 10"을 출력하세요.
만약 숫자가 0이면, "Blast off!"를 단락에 출력하세요.
다른 숫자에 대해서는, 단지 단락에 그 숫자를 출력하세요.

  1. Phil 과 Lola 를 Refused List 배열에, 그 외 손님들은 Admitted List 배열에 넣으세요.(MDN - Looping code 예제)
const people = ['Chris', 'Anne', 'Colin', 'Terri', 'Phil', 'Lola', 'Sam', 'Kay', 'Bruce'];
let i = 0;
let admit = [];
let refuse = [];
//내용
console.log(`Admitted List : ${admit}`);
console.log(`Refused List : ${refuse}`);
//배열에 요소를 넣는 방법 : 배열명.push('넣을 내용')
  1. while 반복문이 순차적으로 실행될 때마다 얼럿 창에 어떤 값이 출력될지 예상해보세요.
    아래 두 예시는 같은 값을 출력할까요?(문제 출처: https://ko.javascript.info/while-for)
  1. 전위형 증가 연산자를 사용한 경우(++i):
let i = 0;
while (++i < 5) alert( i );
  1. 후위형 증가 연산자를 사용한 경우(i++):
let i = 0;
while (i++ < 5) alert( i );

풀이 확인
  1. 4번. i = 3 이 되면 반복문이 종료된다.

  2. 2번. str[str.length-1] 의 값은 마지막 문자열인 'n' 이다.

  3. 구구단의 각 숫자를 두개의 변수로 받아와서 이중 반복문을 작성한다.

for (x = 2; x <= 9; x++) {
  console.log(`${x} 단 :`);
  for (y = 1; y <= 9; y++) {
    console.log(`${x} x ${y} = ${x * y}`);
  }
}
  1. 10 에서부터 작아지는 증감연산자는 i-- 를 사용하면 된다.
for (let i = 10; i >= 0; i--) {
  if (i === 10) {
    console.log('Countdown 10');
  } else if (i === 0) {
    console.log('Blast off!!');
  } else {
    console.log(`${i}`);
  }
}
  1. let i = 0 으로 먼저 할당되어 있었으므로 ;으로 생략 가능하다.
for (; i < people.length; i++) {
if (people[i] === 'Phil') {
  refuse.push('Phil');
} else if (people[i] === 'Lola') {
  refuse.push('Lola');
} else {
  admit.push(people[i]);
}
}
  1. 그 외 문제도 참고하기!(https://ko.javascript.info/while-for)

이 문제는 비교 연산자와 후위/전위형 연산자를 함께 사용하는 경우 어떤 차이가 있는지 보여줍니다.

1. 전위형 증가 연산자를 사용한 경우엔 1부터 4까지 출력됩니다.

let i = 0; while (++i < 5) alert( i );

++ii를 먼저 증가시키고 새로운 값을 반환하기 때문에 첫 번째 while 반복문에선 1과 5를 비교(1 < 5)하고, 얼럿 창엔 1이 출력됩니다.
1에 이어서 2, 3, 4…이 출력됩니다. i 앞에 ++가 붙어있기 때문에 5는 항상 증가 이후의 값과 비교됩니다.
i = 4 이후에 i의 값이 5로 증가하면 while(5 < 5안의 비교가 실패하기 때문에 반복문은 멈춥니다. 따라서 5는 출력되지 않습니다.

2. 후위형 증가 연산자를 사용한 경우엔 1부터 5까지 출력됩니다.
let i = 0; while (i++ < 5) alert( i );

후위 증가 연산자를 적용하면 i++i를 증가시키긴 하지만 기존 값을 반환합니다. 따라서 첫 번째 while 반복문에선 0과 5를 비교(0 < 5)합니다. 이 점이 전위 증가 연산자와의 차이입니다.

그런데 alert문은 조건문과 별개의 문이므로 얼럿창엔 1이 출력됩니다. i는 이미 증가한 이후이기 때문이죠.
1이 출력된 이후에 2, 3, 4…가 이어서 출력됩니다.

i = 4일 때 잠시 생각을 가다듬어 봅시다. 전위 증가 연산자(++i)를 사용하면 값이 먼저 증가하기 때문에 5와 5를 비교하게 되는데, 여기선 후위 증가 연산자(i++)를 사용하고 있으므로 i는 증가하지만 기존 값인 4가 비교에 사용됩니다. 따라서 while(4 < 5)가 되고, 해당 조건은 참이므로 하단 블록이 실행되어 alert 창이 뜨게 됩니다.

다음 반복문은 while(5 < 5)이므로 마지막 출력되는 값은 5가 됩니다.

profile
새싹 프론트엔드 개발자

0개의 댓글