
초기값; 조건문; 증감문 의 순서로 작성한다.
for(let i= 0; i < 10; i++) { } 의 형태이다.
for(let i= 0; i<10; i++) {
//반복하고 싶은 명령문 작성(반복하고 싶은 코드)
console.log(i, "안녕?")
}
console.log("끝")
//i = 0이라는 변수를 선언
//i < 10 일때까지 아래 명령문을 실행한다. 참이라면 반복한다. 명령문이 거짓이 나온다면 { } 밖으로 나오고 끝난다.
//만약 i가 8이면? 명령문을 실행, 증감문 i++을 만나고 9가 된다.
//그리고 9가 되면 동일하게 명령문을 실행, 증감문 i++을 만나고 10이 된다.
//여기서는 명령문이 실행되지 않는다. i<10;의 조건을 만족하지 못하기 때문.
//{ } 밖으로 나오고 종료된다. 그리고 콘솔창에는 “끝”이 출력된다.
조건문에서 i<10; 으로 지정하면 10번을 반복하게 된다! i가 10이 되기 전까지라고해서 9번 반복되는 것이 아니다. JS에서 숫자는 0부터 시작한다. 즉 0부터 실행하게 되고 (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)의 순서대로 되어서 총 10번을 반복하게 되는 것!
for(let i = 0; i < 5; i++) {
for(let j = 0; j<5; j++){
console.log(`i: ${i}, j: ${j}`)
}✔️ 1씩 증가가 아니라 2씩 증가시키고 싶다면?
for(let i = 0; i < 10; i=i+2) {} 이런식으로 해주면 된다.
여기서 i+2 라고만 하면 안된다! i=i+2 이렇게 i에 값을 넣어주도록 작성해줘야한다!
✔️ 여기서 얘네는 똑같이 출력되게 된다. 백틱안에 넣어주면 전부 문자열로 인식해준다. 그리고 ${ }안에 넣으면 해당 변수를 사용하겠다는의미이다. 이거 변수야! 라고 확실히 표시해주는걸로 생각.
console.log(`i: ${i}, j: ${j}`)
console.log("i: " + i + ", " + "j: " +j)
while문에서는 조건이 중요하다. 끝날 수 있는 조건값이어야 한다!
while문은 초기값을 밖에 적어준다. 그리고 증감문이 마지막에 들어온다.
//초기값
while(조건) {
//조건이 참일 떄 실행할 코드
//증감문
}
do {
//조건이 참일 때 실행하 코드
} while(조건)
while(true) {
let number = Number(prompt("지금은 몇년도인가요?"))
if(number>0) break;
}
console.log("정답!")
for(let i=0; i<10; i++) {
if(i%2==0) {
continue;
}
console.log(i);
}
//값이 0부터 들어온다. if의 조건은 결국 짝수를 의미한다. 이 값이 contine를 만나 버려진다.
//i<10;인 값 중 짝수는 버려져 콘솔에 찍히지 않게된다.
//결국 1, 3, 5, 7, 9만 출력된다!배열에서의 for of 반복문
배열의 반복에서 주로 사용한다.
배열의 요소 개수만큼 반복하고, 선언한 변수에 각 배열의 요소들이 순서대로 들어간다고 생각.
let 변수이름 of 배열 의 형태로 사용된다. 여기서 배열은 실제로 존재하는 배열이여야 한다!!그 배열을 참조하겠다는 의미이다. of뒤에 오는 배열의 원소를 하나하나 탐색하면서, 그 원소의 값 자체를 선언한 변수(let 변수이름)에 담는다고 생각하자. 그렇기에 배열의 크기만큼 돌아가게 된다! 배열의 마지막까지 탐색하면 종료된다.
let numbers2 = [1,2,3,4,5,6];
let fruits2 = ["귤", "바나나", "포도", "메론","망고"];
for (let number of numbers2) {
console.log(numbers2);
}
for (let fruit of fruits2) {
console.log(fruits2);
}
배열에서의 forEach
for문법은 아니고 메소드로 본다.
💡 메소드란 어떠한 객체가 가지고 있는 동작을 말한다. 데이터를 참조하고 조작할 수 있는 동작. 객체에게 그 동작을 수행하라고 지시한다. 함수는 함수자체가 그 동작을 정의하는 것이기 때문에 자기 자신을 수행하는 것이다.배열의 요소들을 반복하여 작업을 수행할 수 있다. 함수를 배열 요소 각각에 대해 실행하는 메소드. 배열의 원소를 모두 순서대로 탐색한다!
forEach는 매개변수를 함수로 받는다. 즉 forEach안에 함수구조를 넣는 것이다.
let fruits5 =["apple", "banana", "grape"];
fruits5.forEach((fruit, i, arr) => {
console.log(fruit, i, arr);
});
//이렇게 써도 된다.
let fruits5 =["apple", "banana", "grape"];
fruits5.forEach(fuction (fruit, index, array){
console.log(fruit, index, array
})
1)첫번째 매개변수에는 탐색하는 값이 들어온다.
2)두번째 매개변수에는 인덱스가 들어온다. 탐색된 원소의 인덱스.
3)세번째 매개변수에는 사용하고 있는 배열 자체가 들어온다. 사용할 배열의 내용이 들어오는 것.
이 세가지를 모두 적을 필요는 없지만 순서와 자리가 중요하다! index를 보기 위해 index만 적으면 안된다. fruit, index 까지 적어주어야 한다.
console.log(str.length) 형태.문자열 전체를 대문자, 소문자로 변경.
let str = "I like apple."
console.log(str) //I like apple. 출력.
console.log(str.toUpperCase()) //I LIKE APPLE.출력.
매개변수로 문자열을 받아서 몇 번쨰 인덱스인지 숫자 반환.
let str = "Happy"
console.log(str.indexOf('p')) //2 출력.
start 지점부터(포함) edn-1(end지점 직전)까지 슬라이싱해서 빼온다. 매개변수로 음수값도 가능하다.
let str = "Happy Day~! "
console.log(str.slice(2,7))//ppy D 출력.
console.log(str.slice(2)) //ppy Day~! 출력.
문자열1을 문자열2로 변경해준다.
let str = "aaabbbccc"
console.log(str.replace('a', 'z')) //zzzbbbccc 출력.
문자열1을 전부 찾아서 문자열2로 바꿔준다.
let str = "How is it going?"
console.log(str.replaceAll('i', 'v')) //How vs vt govng? 출력.
console.log(str.repeat(2)) 형태.console.log(str.trim()) 형태.매개변수로 들어온 문자열을 기준으로 str을 쪼개서 배열로 저장한다.
let str = "Happy Day~! "
console.log(str.split(''))
//['H', 'a', 'p', 'p', 'y', ' ', 'D', 'a', 'y', '~', '!', ' ', ' '] 출력.
console.log(str.split(' '))
//['Happy', 'Day~!', '', ''] 출력.
💬
✏️
복습을 하고 이해해가는데 생각보다 많은 시간이 쓰인다. 그리고 시간이 지나면 이렇게나 책상에 앉아있었는데 막상 머리에 들어온건 적다는 느낌이 든다. ㅠ 이것도 익숙해지면 이해하는 속도가 빨라지지 않을까 싶다. 그래도 적은 양이지만 배워가면서 재미를 느끼긴 하니 그걸로 다행이라고 생각해본다.
그리고 수업을 들을 때 리더님이 작성한 코드들을 내 컴퓨터에도 작성을 하면서 수업을 듣는다. 그런데 어느순간부터 그 코드를 따라쓰느라 수업이 제대로 들어오지 않는 느낌이 들었다. 일단 내 컴퓨터에도 받아적어야하니 타자를 치기는 하는데,,, 리더님 목소리를 듣기는 하지만 타이핑에 더 집중하게 되는 느낌..? 괜히 잘못 따라적었다가 오류가 날까봐 코드를 따라적는데에 더 쫓기는 기분이다. 강의코드는 리더님이 따로 넘겨주시기도 하니 수업을 들으면서 이해하는데에 더 집중을 해보기로했다.!!