컴퓨터가 일을 처리할 때마다 같은 명령어를 적어야 하나?
내가 일일이 적어주는 것보다 컴퓨터가 알아서 반복하게 만들어야 할때!
반복문을 사용하시라.
만약 구구단을 만들어 내는 함수를 만들고 싶다면 일일이 2X1, 2X2, 2X3... 이렇게 하나하나 적어주는 것은 효율이 떨어진다. 만약 구구단이 아니라 세자리수가 넘어가는 곱셈이라면 정말 다 적는데 머리 아파질 것이다.🤯
반복하는 건 컴퓨터한테 맡기자.😅
for (초기값; 조건식; 증감식) {
// 코드
}
예를 들어 이렇게 적어보자.
for (let i = 1; i <= 3; i++) {
console.log(i) // 1 2 3
}
정답부터 말하자면,
초기값은 i가 1부터,
조건식은 i는 3이하까지,
증감식은 i가 +1되면서 코드 한번 더 반복.
실행 순서를 적어보자.
- 변수 i를 선언하고 1을 할당.
- 조건식에 따라 i가 3 이하인지 평가. 3이하이면
true로 평가.- 내부 코드가 실행되어
console.log(i)1이 출력.- 증감식에 따라 i가 1이 증가하여 i는 2.
- 조건식에 따라 i가 3 이하인지 평가. i는 2이기 때문에
true.- 내부 코드가 실행되어 2 출력.
- 증감식에 따라 i는 3.
- 조건식에따라 i는 3이하이기 때문에,
true.- 내부 코드 실행. 3출력.
- 증감식에 따라 i는 4.
- 조건식에 따라 i는 3이하라는 조건식에 위배되므로
false로 평가- 반복문 종료.
구구단을 간단하게 적을 수 있다.
let num = 3;
if(num >=2 && num <=9) {
for(let i = 1; i <= 9; i++){
console.log(num * i);
}
}
문자열의 자체 프로퍼티 중에 반복문을 활용해서 사용하는 메서드들이 있다.
문자열을 각 문자의 순서를 가지고 있다.
let str = "McDonald's"
console.log(str[8]); // "'"
console.log(str[2]); // "D"
인덱스를 조회하는 방법
let str = "McDonald's"
console.log(str.indexOf('D')) // 2
console.log(str.indexOf("'")) // 8
let str = "McDonald's";
console.log(str.length); // 10
반복문을 구현하려면 조건식 필요하다. 여기에는 보통 반복하는 횟수의 의미로 많이 넣는데 길이가 조건식에 들어간다면 간편하게 표현할 수 있다.
let str = "McDonald's";
for (let i = 0; i <= str.length - 1; i++) {
console.log(str[i]);
}
주의해야할 점은 문자열의 마지막 문자 인덱스는 문자열의 길이보다 1만큼 작다. 왜냐하면 인덱스가 0부터 시작하기 때문이다.
i <= str.length - 1 아니면 i < str.length로 적어야 문자열 끝까지 순회한다.
for (i = 1; i <= 20; i++){
if(i % 2 === 0) {
console.log(`${i}는 짝수.`)
} else {
console.log(`${i}는 홀수.`)
}
}
구구단을 예시로 들겠다.
for (let i = 2; i <= 9; i++){
console.log(`${i}단`);
for(let j = 1; j <= 9; j++) {
console.log(`${i} x ${j} = ${i * j}`);
}
}
i는 2부터 9까지 반복, j는 1부터 9까지 반복.
순서를 간략하게 설명하자면
1. i는 2부터 시작해서 console.log 출력하고, 밑에 반복문을 j가 1부터 9까지 반복한다.
2. 다시 돌아와서 i는 3부터 j는 다시 1부터 9까지 반복.
...
i가 9까지 반복한다.
초기화, 조건식, 증감식이 필요한 for문과 다르게 while문은 조건식만 입력 한 후, 조건식의 평가결과가 true인 경우 코드블록 내부의 코드를 반복하여 실행한다. 반대로 조건식 평가가 false가 되면 반복문을 중지한다.
let num = 0;
while (num < 3) {
console.log(num); // 0 1 2
num++
}
for문을 사용하는 경우
while문을 사용하는 경우*
논리적인 여러 작업을 합쳐서 일련의 작업을 하는 하나의 단위.
진행되는 순서
1. 함수를 선언하게 되면, 데이터 보관함에 저장된다.
2. 함수의 이름으로 호출을 하게 되면, 저장되어 있는 함수가 조회된다.
3. 함수 호출 시 담겨있는 인자들은 불려진 함수의 파라미터로 들어가 함수를 평가한다.
4. 평가가 끝나면 함수가 순차적으로 실행된다.
5. 함수는 return 값을 만나면 중지되고, 호출했던 코드는 return 값으로 바뀐다.
입력을 받아서 내부 코드를 실행한 후 결과를 반환하는 일련의 과정 묶음.
// 함수선언문
function greeting() {
console.log('hello world');
}
// 함수표현식
let greeting = function() {
console.log('hello world');
}
함수는 호출이 되어야 실행한다.
함수명 뒤에 소괄호()를 붙여서 호출한다.
greeting(); // 'hello world'
매개변수: 함수를 정의할 때 선언하고, 함수 코드 블록 안에서 변수처럼 취급.
전달인자: 호출할 때 소괄호 안에 값을 넣음으로써 매개변수에 값을 할당.
function multiplication(n) {
for (i = 1; i <= 9; i++) {
console.log(`${n}x${i} = ${n * i}`);
}
}
multiplication(5);
multiplication 함수에 선언할 때 쓰인 변수 n은 매개변수
multiplication 함수를 호출할 때 쓰인 숫자 5는 전달인자
매개변수의 갯수보다 적은 인자들이 전달되면 순서대로 적용이 되며 나머지들은 undefined로 초기화된다.
매개변수와 함수 내부에서 선언한 변수는 자신이 선언된 위치에 따라 유효범위가 결정된다. 함수 안에서 선언된 변수는 함수에서만 사용가능하다. 함수를 벗어나면 사용 불가능.
여태 했던 건 console.log. 그냥 값을 콘솔창에 띄우는 거 밖에 안했다. 실제로 함수의 실행결과를 외부로 반환해서 함수 외부에서 함수의 결과값을 사용할 수 있다.
funtion add(x,y) {
return x + y;
console.log(x + y); // 실행되지 않음
}
2.return문에 작성된 코드를 실행한 후 결과를 함수 외부로 리턴한다. 함수 외부에서 호출하면 함수의 실행결과(return문에 적힌 결과)를 알 수 있다.
function add(x, y) {
return x + y;
}
console.log(add(1,2)); // 3
function add (x, y) {
return x + y
}
let result = add(1, 2) + add(3, 4);
console.log(result); // 10
- for문에서 break는 루프를 깨는 명령어다. 중첩반복문에서 사용 되었을 때, 사용된 루프 안에서만 작동하여 그 루프를 깬다.
for 반복문 진짜 복잡하다... 반복해서 봐야 이해될 거 같다. 이래서 반복문인가...😭