WHY? 그럼 백그라운드는 멀티쓰레드인거 같은데 자바스크립트는 싱글쓰레드 아닌가요?
-> 멀티쓰레드로 동작이 가능하다 하지만 백그라운드와 태스크큐는 자바스크립트 언어가
아닌 C++환경에서 작동한다.
백그라운드는 브라우저 혹은 운영체제에서 처리해주기 때문,
자바스크립트에서 멀티쓰레드 환경을 구현하려면 node 14버전 이후 웹워커(워커쓰레드)를 활용하면 된다.
WHY? 태스크큐에서도 우선순위가 있나요?
--> 있다.
태스크큐에 같이 대기하고 있을 때seTimeout 보다 약속이 있는 promise가 우선 순위가 높아 먼저 실행된다.
화살표 함수를 사용하게 되면 자기만의 this를 안가지기 때문에 상위스코프의 this를 가지게 된다.
일반 함수는 자기만의 this를 가져서 부모의 this가 가지기 위해선 that에 부모를 넣어서 사용
function(), ()=> 의 차이를 잘 구분해서 this를 사용하는 여부를 결정하자
기본적으로 화살표 함수를 쓰되, this를 사용해야하는 경우에는 둘 중에 하나 골라서
객체나 배열의 자리 수를 맞춰주면 변수에 대입할 수 있다.
ex) const {getCandy, status: { count }} = candyMachine; const [node, obj, , bool] = array
배열은 자리수를 맞추고 필요없는 자리는 콤마(,)로 빈칸처리하면 된다
코드를 분리할 수 있느냐 없느냐의 중요한 차이가 존재
즉, 실행을 해놓고 나중에 필요할 때 꺼내 쓸 수 있다
AJAX요청시 Axios 라이브러리를 사용하는게 편함.
HTML에 아래스크립트를 추가하면 사용할 수 있음
프로미스 기반 코드라 async/await 사용 가능
axios.get(‘url’)
.then((result) => {
console.log(result);
console.log(result.data);
})
.catch((error) => {
console.error(error);
})
혹은
(async () => {
try {
const result = await axios.get(‘URL’)
console.log(result);
console.log(result.date);
}catch(error){}
POST 전송시에는 axios.post( URL, {}) {}안에 키와 값을 담아서 보내면 됨
formData 객체 이용가능
=> encodeURIComponent로 한글 감싸줘서 처리
ex) const result = await axios.get(`URL${encodeURIComponent(‘한글’)}`);
서버에서는 decodeURIComponent로 서버에서 받을 때 한글 해석
자바스크립트에서 태그.dataset.속성명으로 접근 가능 = data-user-id => dataset.userJob
자바스크립트 dataset에 값을 넣으면 data-속성이 생긴다. = dataset.userJob => data-user-id
REPL(read, eval, print, loop) 읽고, 실행, 출력, 반복