JavaScript 기본 정리
스코프에 대해서 설명하세요.
- 변수를 참조할 수 있는 유효범위를 말함. 지역변수와 전역변수로 나눌 수있는데 전역변수는 최상단의 스코프로써 이곳에 선언된 변수를 전역변수라하고, 로컬 스코프에 선언된 변수는 지역변수로써 해당 스코프와 스코프의 하위에서만 탐색이 가능함.
클로져에 대해서 설명하세요.
-
반환된 내부함수가 자신이 선언됐을때의 스코프를 기억하여 자신이 선언되었을때의 환경 밖에서 호출되어도 그 환경에 접근할 수 있는 함수, 자신이 생성될때의 환경을 기억하는 함수
사용 하는 이유 :
1) 현재 상태를 기억하고 변경된 최신 상태를 유지하기 위해
2) 전역 변수의 사용을 억제 하기위해
3) 정보를 은닉하기 위해
-
클로져를 사용하면 은닉화가 가능함. 내부 변수와 메서드를 안전하게 관리할 때 사용 함. 하지만 매번 사용할 때마다 다른 메모리공간을 차지하기 때문제 성능적 측면을 고려했을 때 꼭 필요한 경우에만 사용하면 좋을 것 같음.
-
호이스팅과 Temporal Dead Zone이 어떻게 연관되어있는지 설명하세요.
호이스팅 (Hoisting)
자바스크립트에서 배열의 타입
- 자바스크립트의 배열의 타입은 객체임.
- 자바스크립트에서는 원시 자료형을 제외하고는 전부 객체(object)로 이루어져 있음.
- Array.isArray()메서드를 통해 배열을 확인할 수 있음.
+++ 원시자료형 - 하나의 데이터를 고정된 크기로 담고 있음(string, number, bigint, boolean, undefined, symbol)
--- 참조자료형 - 동적으로 크기가 변하는 데이터를 보관하기 위해 다른 곳에 데이터를 저장하고 변수에는 해당 데이터가 있는 곳의 주소값만 할당(원시자료형 이외 모든 것이 참조자료형임)
undefined와 null 그리고 undeclared의 차이
- undefined는 변수를 선언했지만 값이 할당되지 않은 변수이고, null은 비어있는 변수 혹은 명시적으로 할당한 것을 뜻함. 그리고 undeclared는 접근 가능한 스코프에 변수 선언조차 되어있지 않은 상태를 의미함
깊은 복사와 얕은 복사의 차이에 대해서 설명하세요. 자바스크립트에서 깊은 복사를 하는 방법은 무엇인가요?
- 얕은복사는 주소값만 복사하여 같은 메모리를 가리키는 것을 말함. 복사하더라도 데이터가 새로 생성되는 것이 아닌 한 데이터를 참조하게 됨.
- 깊은복사는 데이터를 통째로 복사하는 것을 의미. 복사된 객체는 원본과 완전히 독립된 메모리를 차지함.
- 자바스크립트에서 깊은 복사 방법은 JSON.stringify()로 객체를 json문자열로 변환하는 것. 이 과정에서 원본 객체와의 참조가 모두 끊어짐.객체를 json 문자열로 변환 후,JSON.parse()를 이용해 다시 객체(자바스크립트 객체)로 만들어줌.이 방법이 가장 간단하고 쉽지만 조금 느리다는 것 단점이 있음.
다른 방법으로는 Lodash 라이브러리를 설치해서 사용하는 것임.
stringify보다 쉽고 빠르게 복사할 수 있음.
2022.08.22 Daily 회고
오늘 한 일
- HTML / DOM / Javascript 기본 학습
- 모의면접
느낀 점
- 공부한 내용을 말로 설명하려니 버벅이고 어려운 부분이 있었음. 확실히 이해하고 난 후에 나만의 언어로 설명하는 연습이 필요할 것 같음.
- 부족한 부분을 알고, 일정 외의 시간에 차근차근 정리할 예정