정적인 문서(미리 작성, 확정된 페이지 HTML로만 작성 가능)를 동적(변함)으로 표현할 수 있도록 만듬

메모리힙 - 메모리 할당이 일어나는 곳
콜스택 - 실행될 코드가 한 줄 단위로 할당
web apis - 비동기 처리를 담당
callback queue - 큐라는 자류구조, 비동기 처리가 끝난 후 실행되어야 할 콜백 함수 할당
event loop - callback queue에 할당된 함수를 순서에 맞춰 call stack 에 할당 비어있나 확인 후
ES6란?
표준화
변경된 내용
동기
먼저 실행된 코드가 결과가 나올때까지 대기
비동기
실행된 순서와 상관 없이 결과가 나오는 것
blocking model
non-blocking model
Promise
자바스크립트에서 비동기 처리를 동기로 처리할 수 있게 돕는 객체유형
new Promise(executor)
new Promise((resolve, reject)=>{
//명령문
})
async function main(){
function printFunc(){
console.log("printFunc가 실행");
}
const obj = new object();//객체생성
const prom = new Promise(printFunc);//Promise 생성
}
main();
3가지 상태를 지닌다
대기(Pending)
이행(Fulfilled)
거부(Rejected)
Promise.then
Promise가 fulfilled상태(resolve)가 실행이 된 경우 .than()메서드가 실행이 된다.
비동기 함수의 값음 promise로 받는ㄴ다.
await 연산자
promise fulfill이나 rejected가 될 때까지 함수의 실행을 중단하고 대기함
const result = await 값;
예제
function setTimeoutFucn(time){
return new Promise((resolve,reject)=>{
setTimeout(() => {
console.log(time,'에 해당하는 시간이 지났습니다.');
resolve();
}, time);
})//promise실행
}
async function main(){
console.log('시작 되었습니다.')
await setTimeoutFucn(1000);//await 을 쓰게 됨으로서 resolve 시작을 대기함
console.log('종료 되었습니다.')
}
main();
객체란?
자바스크립트는 원시 타입과 객체 타입으로 분류
0개 이상의 프로퍼티로 구성된 집합
하나의 프로퍼티는 key와 value로 구성
객체 리터럴
객체를 생성하기 위한 표기법
class선언new연산자와 함께 생성자를 호출하는 과정x
프로퍼티란?
객체의 상태를 나타내는 값
키와 벨류로 구성
메소드란
프로퍼티를 참조하고 조작할 수 있는 동작
객체의 프로퍼티 값이 함수로 구성되어 있을 경우
let objectLiteral={
key:'value',//프로퍼티
helloworld:function(){//메서드
return 'helloworld'
}
};
에러핸들링
try/catch
try{
---------
} catch(err){
-----------
}
throw 현재 실행되고 있는 함수의 실행을 멈춤
throw new Error('잔고가 부족합니다');
ddddddddddddddd
fffffffffffffff//출력되지 않음
finally
코드가 성공을 해든 안했든 무조건 실행
function errorException(isThrow){
try{
console.log('자원할당')
if(isThrow) throw new Error();
}
catch(error){
console.log('에러발생')
}
finally{
console.log('자원제거')
}
}
errorException(false);
//자원할당
//자원제거
errorException(true);
//자원할당
//에러발생
//자원제거
클래스
this와 프로퍼티
this는 클래스를 사용해 만들어 질 객체 자신
this뒤에 붙는 띵띵띵은 객체의 속성(propety)이다.
메서드는 객체에 묶여 있는 함수