1.동기와 비동기
synchronous
자바스크립트는 동기적이다. 즉, 호이스팅이 된 이후부터 코드가 작성 순서에 맞춰 하나하나 자동적으로 실행
*호이스팅(hoistion)? var변수, function 선언이 자동으로 제일 위로 올라가는 것
asynchronous
언제 코드가 실행될지 예측할 수 없는 것
함수를 등록하고 어떤 이벤트가 발생했거나 특정 시점에 도달했을때 시스템에서 호출하는 함수
2.콜백
(1)
console.log('1');
setTimeout(() => console.log('2'), 1000);
console.log('3');
printImmediately(() => console,log('hello'));
//synchronuous callback
function printImmediately(print) {
print();
} // 얘가 위로 호이스팅되어 선언되어 순차적으로 실행될것이다.
결과:
1
3
hello
2
(2)
console.log('1');
setTimeout(() => console.log('2'), 1000);
console.log('3');
printImmediately(() => console,log('hello'));
//synchronuous callback
function printImmediately(print) {
print();
} // 얘가 위로 호이스팅되어 선언되어 순차적으로 실행될것이다.
//asynchronous callback
function printWithDelay(print, timeout) {
setTimeout(print, timeout);
}
printWithDelay(() => console.log('async callback'), 2000);
결과:
1
3
hello
2
async callback
콜백 함수를 활용하는 함수:forEach()
해당 메소드는 배열이 갖고 있는 함수로써 단순하게 배열 내부의 요소를 사용해서 콜백 함수를 호출해준다.
function(value, index, array) { }
콜백 함수를 활용하는 함수:map()
배열이 갖고 있는 함수로 콜백 함수에서 리턴하는 값들을 기본으로 새로운 배열을 만드는 함수
콜백 함수를 활용하는 함수:filter()
배열이 갖고 있는 함수 콜백 함수에서 리턴하는 값이 true 인 것들만 모아서 새로운 배열을 만드는 함수
(Hyper Text Markup Language) 문서와 문서가 링크로 연결 되어 있음
Transfer :HTML로 만든 웹페이지 문서(파일)을 보낸다.
Protocol :컴퓨터끼리 어떻게 HTML 파일을 주고 받을 지에 대한 소통 방식 또는 약속
HTTP
: Hyper Text Transfer Protocol
서버/클라이언트 모델을 따라 데이터를 주고받기 위한 프로토콜
인터넷에서 하이퍼텍스트를 교환하기 위한 통신 규약으로 80번 포트를 사용하고 있다.
HTTP 서버가 80번 포트에서 요청을 기다리고, 클라이언트는 80번 포트를 통해 요청한다.
애플리케이션 레벨의 프로토콜로 TCP/IP 위에서 동작한다.
HTTP는 상태를 가지지 않는 stateless 프로토콜이며 Method, Path, Version, Headers, Body 등으로 구성된다.
암호화되지 않은 평문 데이터를 전송하는 프로토콜로 비밀번호와 같은 중요한 정보를 전송하면 제 3자가 정보를 조회할 수 있어 위험하다.
그래서 HTTPS가 등장하게 되었다.
HTTPS
: Hyper Text Transfer Protocol Secure
HTTP에 데이터 암호화가 추가된 프로토콜
443번 포트가 사용되며 네트워크 상에서 제 3자가 정보를 훔쳐볼 수 없도록 암호화를 지원한다.