JavaScript 공부 4주차

sdtana·2021년 4월 4일
0
  • 조건문
  • 반복문

조건문

조건문은 주어진 조건식의 평가 결과에 따라 코드 블록의 실행을 결정한다. 조건식은 불리언 값으로 평가될 수 있는 표현식이어야 한다.
조건문은 if else 문과 switch 문이 있다.

if else문

주어진 조건식(조건식은 불리언 값으로 평가되며, 그렇지 않으면 불리언 값으로 암묵적 타입 변환되어 실행)의 평가 결과에 따라 실행할 코드 블록을 결정한다. 조건식의 평가 결과가 true일 경우, if 문의 코드가 실행되며, 평과 결과가 false일 경우 else문의 코드가 실행된다.
만약 조건식을 추가하여 조건에 따라 실행될 코드 블록을 늘리고 싶다면 else if 문을 사용한다.
사용법

if (조건식1) {
	//조건식1이 참이라면 식 실행
} else if (조건식2) {
	//조건식2가 참이라면 식 실행
} else {
	//조건식1과 조건식2가 모두 거짓이면 식 실행
}

switch 문

주어진 조건식을 평가하여 그 값과 일치하는 표현식을 갖는 case 문으로 실행 흐름을 옮긴다. 만약 조건식과 일치하는 case 문이 없다면 실행 순서는 default 문으로 이동한다.
주의할 점으로, case 문을 실행한 후 자동으로 switch 문을 탈출하지 않는다. 해당하는 case 문으로 이동한 뒤 brake문을 사용하지 않는다면 switch문이 끝날 때까지 모든 case 문과 default 문을 실행하는데, 이를 폴 스루(fall through)라고 한다. 이를 막기 위해 case 문에는 break 문을 삽입하는 것이 좋다.

반복문

조건식의 평가 결과가 참인 경우 코드 블록을 실행하며, 그 후 조건식을 다시 평가하여 여전히 참인 경우 코드 블록을 다시 실행한다. 이는 조건식의 평가 결과가 거짓일 때까지 반복된다.
JavaScript는 for 문, while 문, do...while 문, for...in 문, for...of 문, forEach 메소드를 제공한다.

for 문

for 반복문은 어떤 특정한 조건이 거짓으로 판별될 때까지 반복한다.
초기문이 존재한다면 실행되며, 보통 1이나 반복문 카운터로 설정되지만 변수나 복잡한 구문으로 표현 될 때도 있다. 조건문은 조건을 검사하는데, 만약 조건문이 참이라면, 그 반복문은 실행된다. 조건이 거짓이라면 for 문은 종료되고 만약 조건문이 생략된다면 그 조건문은 참으로 추정된다.
증감문이 존재한다면 실행된 후 반복을 재개한다.
for([초기문]; [조건문]; [증감문])

while 문

while 반복문은 for문과 같이 어떤 특정한 조건이 거짓으로 판별될 때까지 반복한다. 보통 for 문은 반복 횟수가 명확할 때 사용하고 while 문은 반복 횟수가 불명확할 때 사용한다.
조건식의 평가 결과가 언제나 참이면 무한 루프가 되는데, 무한루프를 탈출하기 위해 if 문과 break 문으로 탈출 조건을 만드는 것이 좋다.

do...while 문

do...while 문은 코드 블록을 먼저 실행하고 조건식을 평가한다. 즉, 코드 블록은 무조건 한 번 이상 실행된다. 이 외에 효과는 while문과 동일하다.

for...in 문

for...in 문은 객체 모든 프로퍼티를 순회하며 열거합니다. 배열 요소를 반복하는 방법으로 사용할 수도 있지만, 만약 배열에 대해 프로퍼티 또는 메소드를 추가하는 등 Array 객체를 수정한다면 배열 요소 이외에도 프로퍼티가 열거되기 때문이다.
for (변수선언문 in 객체) {...}

for...of 문

for...of 문은 ES6에서 도입된 이터레이션 프로토콜(iteration protocol)은 순회 가능한(iterable) 데이터(배열, 문자열) 등을 이터러블 프로토콜을 준수하는 이터러블이라는 객체로 통일하여 사용하기 위한 반복문 중의 하나이다.
for...of 문은 이터러블을 순회하며 이터러블의 요소를 변수에 할당한다.

for (const item of [1, 2, 3]) {
	//item 변수에 순차적으로 1, 2, 3을 할당한다
    console.log(item) // 1 2 3
    }

forEach 메소드

이 내용은 지금 배우지 않은 내용이 너무 많아 이론 설명만 하겠다.
먼저, 함수형 프로그래밍은 순수 함수와 보조 함수의 조합을 통해 외부 상태를 변경하는 부수 효과를 최소화하여 불변성을 지향하는 프로그래밍 패러다임이다. 이를 위해선 조건문과 반복문, 변수 사용을 최소화하여 복잡성을 해결하여야 한다.
forEach 메소드는 for 문을 대체하는 higher-order function(함수의 매개변수를 통해 외부에서 콜백 함수를 전달받은 함수)로써, 내부에서 반복문을 통해 배열을 순회하며 수행해야 할 함수를 callback function(함수의 매개변수를 통해 다른 함수의 내부로 전달되는 함수)로 전달받아 반복 호출한다. 즉 for 문과 하는 역활은 동일하다.

arr.forEach(callback(currentvalue[, index[, array]])[, thisArg])

과제 1. LinkedList를 구현하세요.

  • LinkedList에 대해 공부하세요.
    linkedlist(연결 리스트)란, 각 데이터들을 포인터로 연결하여 관리하는 자료 구조이다.
    연결 리스트에서 노드는 데이터를 저장하는 데이터 영역과 다음 데이터가 저장된 노드를 가리키는 포인터 영역으로 구성된다.
  • 데이터 삽입 시
    [1, 3, 5]리스트에 2를 삽입해서 [1, 2, 3, 5] 리스트를 만들고 싶다면, 2가 3을 가리키게 한 뒤, 1이 2를 가리키게 한다.
  • 데이터 삭제 시
    [1, 3, 5] 리스트에 3을 없애고 싶다면, 1이 3을 가리키게 하면 된다.(2는 가비지 콜렉션에 의해 삭제된다)
profile
귀차니즘 탈출 시도중

0개의 댓글

관련 채용 정보