Frontend 면접준비

jeky22·2021년 7월 24일
0
post-thumbnail

JS

프로토타입이란?

js에서는 기본 데이터타입을 제외한 모든 것이 객체로 이루어져 있습니다. 이 객체들은 만들어질때, 자신을 만드는 데 사용된 원형인 프로토타입 객체를 이용하여 객체를 만들게 됩니다. 이때 만들어진 객체 속 proto property에 자신을 만들어낸 원형을 의미하는 프로토타입 객체를 링크하게 됩니다. 이때 링크를 프로토타입이라고 정의합니다.

https://www.nextree.co.kr/p7323/

this는 어떤걸 가리키나요

this는 함수가 호출되는 방식에 따라 달라지게 됩니다. new, apply, call,bind와 같은 일부 함수의 호출에 사용되는 경우를 제외하고는 전역객체를 가르키게 됩니다. 따라서 브라우저에서는 window 객체를 가르킵니다.
또한 es6에서 생성된 arrow function의 내부에서 선언된 경우 생성된 시점에서의 주변 스코프의 this값을 받습니다.

scope란 무엇인가요?

js에서 scope는 변수에 접근할 수 있는 범위입니다. 두가지 범위가 있는데 global과 local범위가 있습니다. 함수를 선언하게 되면 새로운 스코프가 생성되는데 이 함수 내에서 선언된 변수는 함수내에서만 접근할 수 있고 이것을 local 스코프라합니다.

var, let, const 차이는?

let과 const는 es6에서 생긴 개념입니다. var는 함수 레벨 스코프이고 let과 const는 블록레벨 스코프입니다. 또한 var는 중복선언이 가능하지만 let은 같은이름의 변수 선언이 불가합니다.
let 과 const는 재할당이 가능한지 여부의 차이입니다.

let과 const는 참고로 다른프로그래밍 언어들은 블록 레벨 스코프를 따르지만 js는 function level 스코프를 따르고있었습니다.

호이스팅이란

함수 안에 있는 선언들을 모두 끌어올려서 해당 함수 유효 범위의 최상단에 선언하는 것으로 생각합니다. 하지만 물리적으로 선언부가 옮겨가지는 않습니다 실질적인 동작은 js엔진이 스크립트를 가져오면 함수와 변수가 선언된 것을 찾고 메모리에 함수와 변수를 저장하게 되는데 이것을 호이스팅이라고 합니다.
let과 const가 호이스팅이 발생하지 않는 다는 의견이 있는데 이는 아닙니다.

클로저는 무엇이고 왜 사용하나요?

정의: 클로저는 함수와 그 함수가 선언됐을 때의 렉시컬 환경과의 조합

이 말을 풀어보면 클로저는 반환된 내부함수가 자신이 선언됐을 때의 lexical scope를 기억하여 스코프 밖에서 호출되어도 그 스코프에 접근할 수 있는 함수를 뜻합니다.
이와같은 클로저는 캡슐화의 은닉화를 모방하였고 모듈패턴(변수를 안쪽에 가두어 외부에서 접근이 불가능)에 주로 사용합니다.

profile
프론트엔드 개발자

0개의 댓글