1) 요청 상태 코드 확인
2) 요청 헤더와 응답 헤더 분석
GET /api/v1/resource HTTP/1.1
Host: example.com
Authorization: Bearer token1233) 응답 시간 분석
변수 참조 오류
console.log(nonExistentVar); // Uncaught ReferenceError
타입 오류
let obj = {};
obj.push(1); // Uncaught TypeError: obj.push is not a function
비동기 처리 오류
요소 선택
document.getElementById(), document.querySelector()와 같은 메서드를 사용해 DOM 요소를 선택함.let element = document.getElementById('myElement');
DOM 요소 수정
element.innerText = "New Text";
element.setAttribute('src', 'newImage.jpg');
이벤트 처리
element.addEventListener('click', () => {
console.log('Button clicked!');
});
1) 콜백 함수
콜백 함수는 비동기 작업이 완료된 후 호출되는 함수로, 자주 사용되지만 콜백 지옥(callback hell) 문제를 야기할 수 있음.
function loadData(callback) {
setTimeout(() => {
callback("Data loaded");
}, 1000);
}
loadData((data) => {
console.log(data);
});
2) 프로미스(Promise)
Promise는 비동기 작업을 처리하기 위한 객체로, 작업이 성공적으로 완료되면 resolve, 실패하면 reject를 호출함. 이를 통해 비동기 작업의 흐름을 더 명확하게 관리할 수 있음
let promise = new Promise((resolve, reject) => {
setTimeout(() => {
resolve("Data loaded");
}, 1000);
});
promise.then((data) => {
console.log(data);
}).catch((error) => {
console.error(error);
});
3) async/await
async/await는 Promise 기반 비동기 작업을 처리하는 더 직관적인 방법. await 키워드를 통해 Promise가 완료될 때까지 기다리고, 그 결과를 처리할 수 있음
async function fetchData() {
try {
let response = await fetch('https://api.example.com/data');
let data = await response.json();
console.log(data);
} catch (error) {
console.error(error);
}
}
fetchData();
document.querySelector()와 같은 JavaScript 메서드를 사용해 특정 HTML 요소를 선택하고, 해당 요소에 접근할 수 있음let button = document.querySelector('button');CSS 클래스 추가/삭제: JavaScript를 통해 HTML 요소에 CSS 클래스를 동적으로 추가하거나 제거할 수 있음
button.classList.add('active');
button.classList.remove('inactive');
스타일 직접 변경: JavaScript를 사용해 요소의 인라인 스타일을 직접 변경할 수도 있음.
button.style.backgroundColor = 'blue';