-
Scss
- Sassy CSS의 줄임말로, css를 보완하고 확장한 스타일 시트 언어. 기본 css문법을 따르지만 변수, 중첩 규칙, 믹스인(재사용 가능한 스타일 블록), 함수 등을 사용하여 스타일 시트를 더 모듈화하고 유지보수하기 쉽게 만듦
-
px, em, rem 차이점
- px은 절대단위, em은 부모 속성 단위, r(root)em은 최상단 속성 단위
-
position 속성
- 요소의 위치를 지정하는데 사용. static, relative, absolute, fixed, sticky
-
display 속성
- 요소의 표시 방법 지정. block, inline, none, flex, grid
-
시멘틱 마크업
- HTML요소를 이용하여 문서 구조를 설명하고 의미론적인 의미를 부여하는 것을 의미
- 이를 통해 검색엔진이나 스크린 리더와 같은 보조기술이 문서를 이해하고 해석할 수 있음
- 코드의 가독성과 유지보수성을 높여줌
-
this
- 현재 실행중인 코드에서 “현재 객체”를 참조하는 키워드
- 전역 컨텍스트 : 전역 객체 = 브라우저 환경에서 window
- 함수 내부 : 해당 함수를 호출한 객체를 참조, 그러나 함수가 일반적인 함수호출로 호출된 경우 전역 객체 가리킴
- 메소드(객체가 가지고 있는 함수) 내부 : 해당 메소드가 속한 객체를 가리킴
- 생성자 함수 내부 : 새로 생성되는 객체
- call, apply, bind
- call : 함수를 호출하는 메소드로, 함수를 호출하면서 특정 객체를 함수 내부의 **
this
**에 바인딩합니다. 또한, 함수에 필요한 매개변수를 직접 전달할 수 있습니다. call
메소드는 첫 번째 인자로 함수 내부에서 **this
**에 바인딩할 객체를 받고, 이후에는 함수에 전달할 인자들을 받습니다.
- apply : **
call
**과 유사하지만, 함수에 인자들을 배열로 전달하는 차이가 있습니다. 첫 번째 인자로 함수 내부에서 **this
**에 바인딩할 객체를 받고, 두 번째 인자로는 함수에 전달할 인자들을 배열로 받습니다.
- bind : 함수의
this
값을 영구적으로 설정한 새로운 함수를 반환합니다. 즉, 새로운 함수를 만들고 그 함수를 호출하면 항상 지정된 객체가 **this
**로 사용됩니다. bind
메소드는 첫 번째 인자로 함수 내부에서 **this
**에 바인딩할 객체를 받습니다.
-
콜백 함수 : 다른 함수에 인수로 전달되는 함수(함수 안에 함수)
- 대표적인 예시로 setTimeout
- 콜백지옥 : 콜백함수 안에 콜백함수.. 이를 반복 → 코드 가독성을 떨어뜨리고 유지보수가 어려워짐
- promise나 async/await 비동기 함수로 처리로 해결
-
Promise : 비동기 작업을 처리하는데 사용되는 객체
- then(), catch()메소드를 제공함
fetchData()
.then(data => {
console.log("Data:", data);
})
.catch((error) => {
console.log("Error:", error);
});
-
async/await : 비동기 처리를 보다 간편하게 작성할 수 있도록 도와주는 기능
- async함수를 사용해 비동기 작업 수행, await를 사용하여 비동기 작업의 결과를 기다릴 수 있음 → 이를 통해 비동기 코드를 동기식처럼 작성할 수 있음
- try/catch문을 사용하여 error처리를 함.
- Promise를 사용하는 것보다 더 직관적이고 읽기 쉬움. 에러 처리도 간편해지고, 비동기 작업을 더 쉽게 조율할 수 있음
-
var, let, const : 변수 선언하는데 사용되는 키워드
함수 스코프 : 함수 내에서 선언된 변수는 함수 내에서만 유효하며, 함수 외부에서는 접근 불가
블록 스코프 : 중괄호 안에서 선언된 변수는 해당 블록 안에서만 유효, 외부에서 접근 불가
|
스코프 |
호이스팅 |
|
var |
함수 |
발생, undefined |
재선언 가능 |
let |
블록 |
발생, but ReferenceError |
재선언 불가능 |
const |
블록 |
발생, but ReferenceError |
재선언,재할당 불가능 |
-
이벤트 버블링, 캡쳐링 : HTML 요소 간에 발생한 이벤트가 어떻게 전파되는지 설명하는 이벤트 전파 모델
- 캡쳐링 : 이벤트가 발생한 요소에서부터 DOM트리의 가장 깊은 요소까지 이벤트 전파
- 버블링 : 이벤트가 발생한 요소에서부터 DOM트리의 가장 상위 요소까지 이벤트가 전파
- 이벤트 위임 : 여러 하위 요소에 대한 이벤트 핸들러를 각각 등록하는 대신, 상위 요소에 하나의 이벤트 핸들러를 등록하여 하위 요소들의 이벤트를 관리하는 패턴
- 이벤트 핸들러 수 줆 = 메모리 사용량 줄임, 성능 향상
-
호이스팅이 발생하는 이유
- 자바스크립트 엔진이 코드를 해석할 때 변수 및 함수 선언을 메모리에서 먼저 할당하고, 코드 실행 단계에서 변수 초기화 및 함수 할당을 처리하기 때문이다.
- 호이스팅은 코드의 이해를 어렵게 만들 수 있으므로, 변수 및 함수 선언을 스코프의 최상위에서 하는게 좋음
-
클로저 : 함수와 그 함수가 선언될 당시의 렉시컬 환경 사이의 조합
- 함수가 다른 함수의 내부에서 정의되고, 해당 함수가 외부 스코프에 대한 참조를 가질 때 발생
- 정보 은닉, 콜백함수, 비동기 작업 처리에 사용됨
12-1**. 렉시컬(정적) 환경** : 자바스크립트에서 스코프를 관리하는 메커니즘 중 하나