HTTP 메소드에 대해 설명해 주세요.
http 메소드에는 대표적으로 get, post, put, patch, delete가 있는데 get 방식은 서버에 데이터를 조회할 때 사용한다. crud 기능 중에 read 역할인데 url을 통해 모든 파라미터를 전달하기 때문에 주소창에 전달 값이 노출되고, url 길이에 제한이 있어 전송 데이터 양도 한정되어 있다. url에 파라미터가 노출되기 때문에 get 방식에서는 중요한 정보는 다루면 안된다. post 방식은 서버에 데이터를 생성할 때 사용하는데, crud 기능 중에 create의 역할을 한다. get과 다르게 post 방식의 요청은 http body에 데이터를 포함해서 전달하고, 웹 브라우저에 직접적으로 파라미터가 노출되지 않고 길이에 제한도 없다. get 방식 요청은 캐시가 가능하고 브라우저 히스토리에 남는데 post 방식 요청은 캐시되지 않고 브라우저 히스토리에 남지 않는다. get 방식의 요청은 멱등성이 보장되는데 post 방식의 요청은 멱등성이 보장되지 않는다. 멱등성은 수학에서 연산을 여러 번 해도 결과가 달라지지 않는 성질을 말한다. 동일한 요청을 한 번 보내는 것과 여러 번 보내는 것이 같은 효과를 가지고 서버의 상태가 동일하게 남을때 해당 http 메소드가 멱등성을 가진다고 할 수 있다.
put 방식은 데이터를 수정할 때 사용하는데, crud 기능 중에 update의 역할을 한다. patch 방식도 동일하게 데이터를 수정할 때 사용하는데 put은 데이터를 덮어쓰기 때문에 전체를 수정할 때 사용하고 patch는 부분적으로 수정할 때 사용한다. put 방식은 멱등성이 보장되지만 patch 방식은 멱등성이 보장되지 않는다. delete 방식은 데이터를 삭제할 때 사용하고 멱등성을 가지며 crud 기능 중에 delete의 역할을 한다.
예시의 코드를 실행할 때, 콘솔에 출력될 값과 그 이유를 설명해 주세요.
// 1번
let num = 1;
// 2번
setTimeout(() => {
num = 2;
}, 0);
// 3번
num = 3;
// 4번
console.log(num);
let num = 1; 로 변수에 1 값을 할당되고 그 다음 줄로 넘어가 setTimeout 함수가 실행되는데 비동기 함수이기 때문에 바로 실행되지 않고 이벤트 큐에서 대기하게 된다.
그 다음 줄로 넘어가 num의 값이 3으로 업데이트되고 콘솔에 3이라는 값이 출력된다.
실행이 끝나면 이벤트 큐에서 대기하던 setTimeout 함수가 실행되어 값이 2로 재할당된다.