Study/JavaScript(73)
-
history API로 SPA 구현
history API브라우저는 페이지 로딩 시 세션 히스토리를 갖는다.세션 히스토리는 페이지를 이동할 때마다 쌓이며, 이를 통해 뒤로가기 시 이전 페이지로 가거나 뒤로 간 이후 다시 앞으로 가는 등의 이동이 가능하다.사용자가 페이지를 새로고침 하거나 뒤로가기/앞으로가기 버튼을 클릭하지 않아도, 웹 애플리케이션 내에서 프로그래밍 방식으로 페이지를 이동할 수 있다.`history.back()`: 브라우저의 '뒤로' 버튼과 같은 역할. 세션 기록에서 한 단계 이전 페이지로 이동`history.forward()`: 브라우저의 '앞으로' 버튼과 같은 역할. 세션 기록에서 한 단계 다음 페이지로 이동`history.go(n)`: 현재 위치에서 상대적으로 n페이지 만큼 앞이나 뒤로 이동. n이 음수일 경우 n 페이지..
2024.06.24
-
Debounce & Throttle
Debounce & Throttle이벤트 오버클럭(overclock - 과도한 이벤트 발생)은 리소스 사용량을 증가시키기 때문에 성능문제를 야기하고 사용자 경험을 떨어트립니다.과도한 이벤트나 함수들의 빈도수를 줄여서 성능을 향상시키는 프로그래밍 기법 중, 자주 언급되는 두 가지를 알아봅니다. Debounce와 Throttle은 둘 다 함수의 연속적인 실행을 제한하는 목적을 가지고 설계되었습니다.그 중 `Debounce`는 특정 기간 동안 함수의 실행을 모두 취소하고, 마지막 실행만 수행합니다.반대로 `Throttle`은 함수 실행 후 특정 기간 동안 추가적인 함수의 재실행을 모두 취소합니다.이 둘은 매우 비슷해 보이지만 서로 다른 특성을 갖고 있는, 정해진 시간 동안 얼마나 많은 함수의 실행을 허가할 것..
2024.05.23
-
단축평가 논리연산자 && ||, null병합 ??, 옵셔널체이닝 ?
단축평가논리합 `||`, 논리곱 `&&` 연산자는 왼쪽부터 오른쪽으로 평가를 진행하는데,중간에 평가 결과가 나오면 오른쪽 끝까지 가지 않고 평가 결과를 반환해버린다.논리합, 논리곱 연산자 표현식은 언제나 2개의 피연산자 중 어느 한 쪽으로 평가된다. 이를 단축평가(Short Circuit Evaluation)라고 하며, 피연산자의 타입을 고려하지 않고 그대로 반환한다. 단축 평가를 활용하면 아래와 같은 코드가 가능해진다."apple" || "banana"; // "apple""apple" && "banana"; // "banana" 논리합 ( || , A or B)A가 `true`면 A를 반환한다.논리합 연산자는 두 피연산자 중 하나만 `true`여도 `true`를 반환한다.따라서 앞의 항 A의 값..
2024.05.14
-
Element: insertAdjacentHTML()
insertAdjacentHTML()인터페이스의 insertAdjacentHTML() 메서드는 지정된 텍스트를 HTML 혹은 XML로 파싱하고 결과 노드들을 지정된 위치의 DOM 트리에 삽입합니다. SyntaxinsertAdjacentHTML(position, text) position요소와 상대적인 위치를 나타내는 문자열입니다. 다음 문자열 중 하나여야 합니다.beforebegin요소 이전에 위치합니다. 오직 요소가 DOM 트리에 있고 부모 요소를 가지고 있을 때만 유효합니다.afterbegin요소 바로 안에서 처음 자식 이전에 위치합니다.beforeend요소 바로 안에서 마지막 자식 이후에 위치합니다.afterend요소 이후에 위치합니다. 오직 요소가 DOM..
2024.04.15
-
vanillaJS module
보호되어 있는 글입니다.
2024.01.09
-
async, await
async, await async, await을 사용해서 비동기 프로그래밍을 할 수 있다. async 키워드를 사용해서 함수를 선언하게 되면 함수 내부에서 await 키워드를 사용할 수 있다. await 키워드는 promise로 만든 함수에만 사용할 수 있다. await을 사용하면 다음 코드를 실행하지 않고 promise를 기다린다. 하지만 스레드를 막고 있지는 않아서 함수 외부의 다른 코드는 실행된다. const getPromise = (seconds) => new Promise((resolve, reject)=>{ setTimeout(()=>{ resolve('완료'); }, seconds * 1000); }); // async 함수 선언 // async 함수 키워드로 함수를 선언하면 함수 내부에서 ..
2024.01.04