<초보자를 위한 JavaScript 200제>와 MDN을 참고한 글입니다.
특정 코드를 반복하는 흐름을 제어한다.
문법은 아래와 같다.
for (초기값; 조건식; 어떤 간격으로) {
실행할 문장
}
for (var i =0; i<10; i++) {
console.log(i + '번째 반복할 문장입니다.');
}
//0번째 반복할 문장입니다.
//1번째 반복할 문장입니다.
//2번째 반복할 문장입니다.
//3번째 반복할 문장입니다.
//4번째 반복할 문장입니다.
//5번째 반복할 문장입니다.
//6번째 반복할 문장입니다.
//7번째 반복할 문장입니다.
//8번째 반복할 문장입니다.
//9번째 반복할 문장입니다.
0부터 시작이기 때문에 0~9까지 열 번이 반복된다.
let str = '';
for (let i = 0; i < 9; i++) {
str = str + i;
}
console.log(str);
// expected output: "012345678"
조건문이 참일 때 실행되는 반복문이다. 조건은 문장안이 실행되기 전에 참, 거짓을 판단한다.
while (조건식) {
반복하게 될 문장
}
아래 2개 문제 출처
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=diceworld&logNo=220178704694
//Q. while문을 이용하여 1 부터 100까지 더하고 그 결과를 출력하시오.
//문제의 주석은 내가 해석한 내용
//사용할 변수선언
var val = 0;
var i = 0;
while (i <= 100) {
//i=0, 101번 돈다. (반복되는 횟수는 0~100 = 101번)
//val은 0, 0 + i
val = val + i;
//증감연산자 ++ (1씩 더해준다는 뜻)
i++;
}
console.log("val : " + val);
//val : 5050
i가 1이어도 val = 5050이다.
i가 1일때 반복은 1~100으로, 100번 반복하게 된다.
//Q. while문을 이용하여 1부터 10까지 난수를 출력하는 소스를 반복실행시키되 숫자 7이 나오면 종료되도록 처리하시오.
//문제의 주석은 내가 해석한 내용
var val;
while (true) {
//0부터 1사이의 값이 소수점이 붙어서 무작위로 출력
//Math.random() = 0.xxx... ~ 0.999...
//(Math.random() * 10) = 0.xxx... ~ 9.99999...
//Math.ceil = 올림(9.9 = 10)
//따라서 val = 1 ~ 10
val = Math.ceil(Math.random() * 10);
console.log("val : " + val);
//만약 반복하다가 val값이 7이 나올경우 break
if (val == 7) {
break;
}
}
Math.random()
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Math/random
난수 생성 참고
https://hianna.tistory.com/454
문제에서 오래 고민했던 부분은 Math.random()의 범위다.
0이 나오면 val의 범위는 0 ~ 10이 아닐까?라는 생각.
하지만 Math.random()은 0 ~ 1미만의 '난수'를 출력한다.
난수는 0부터 1사이의 값 중 소수점이 붙어 무작위로 출력된다.
무엇보다도 0은 '정수'이기 때문에 애초에 출력되지 않는다!
따라서 Math.ceil(Math.random() * 10)에서 0은 나오지 않는다.
console.log(Math.random() * 1);
//0.0xxxxxxx.....