면접질문

    this의 정의

    this의 정의

    자바스크립트에서 this는 호출 방식에 따라 바인딩 되는 값이 다릅니다. 자바스크립트 ES5에선 함수를 어떻게 호출했는지 상관하지 않고 this 값을 설정할 수 있는 bind 메서드를 쓸 수 있습니다. 추가로 this 바인딩을 제공하지 않는 화살표 함수 또한 존재합니다. 1. 단독으로 쓴 this this는 기본적으로 global object를 가리킵니다. 브라우저에서 호출할 경우 [object Window]가 되는걸 확인할 수 있습니다. 이는 ES5에서 추가된 strict mode에서도 마찬가지입니다. 'use strict'; var x = this; console.log(x); //Window 2. 함수 안에서 쓴 this 함수 안에서 this는 함수를 호출하는 주인에게 바인딩됩니다. 여기서 말하는 ..

    RESTful API

    RESTful API

    *Restful API란? RESTful API는 두 컴퓨터 시스템이 인터넷을 통해 정보를 안전하게 교환하기 위해 사용하는 인터페이스다. 대부분의 비지니스 애플리케이션은 다양한 태스크를 수행하기 위해 다른 내부 애플리케이션 및 서드 파티 애플리케이션과 통신하기 위해 사용한다. *API(Application Programming Interface)란? API는 다른 소프트웨어 시스템과 통신하기 위해 따라야 하는 규칙을 정의한다. 웹 API는 클라이언트와 웹 리소스 사이의 게이트웨이라고 생각할 수 있다. *REST(Representational State Transfer)란? REST는 API 작동 방식에 대한 조건을 부과하는 소프트웨어 아키텍처다. REST 기반 아키텍처를 사용하여 대규모의 고성능 통신을 ..

    클로저(closure)의 개념

    클로저(closure)의 개념

    *클로저(closure)란? 클로저는 반환된 내부함수가 자신이 선언됐을 때의 환경인 스코프를 기억하여 자신이 선언됐을 때의 스코프 밖에서 호출되어도 그 스코프에 접근할 수 있는 함수를 말한다. 즉, 클로저는 자신이 생성됐을 때의 환경을 기억하는 함수라고 말할 수 있다. function outerFunc() { let x = 10; let innerFunc = function () { console.log(x); }; return innerFunc; } let inner = outerFunc(); inner(); // 10 함수 outerFunc는 내부함수 innerFunc를 반환하고 생을 마감했다. 즉, 함수 outerFunc는 실행된 이후 콜스택(실행 컨텍스트 스택)에서 제거되었으므로 함수 outerF..

    호이스팅(Hoisting)의 개념

    호이스팅(Hoisting)의 개념

    *호이스팅이란? 컴파일 시점에서 변수, 함수의 선언부가 위치한 인접 스코프의 최상단으로 끌어올려지는 듯한 현상을 말한다. JS는 코드를 실행하기 전에 컴파일 과정을 거친다. 컴파일은 고급 언어로 이루어진 코드를 저급 언어로 번역하여 컴퓨터가 이해할 수 있도록 분석하는 과정이다. 이 과정에서 JS 엔진은 모든 스코프를 탐색하며 각 실행 컨텍스트의 변수 객체에 여러 식별자를 수집한다. 결과적으로 코드 실행 시점 이전에 선언된 식별자에 대한 정보를 이미 알고 있기 때문에 호이스팅 현상이 발생하는 것이다. 하지만 호이스팅 현상이 모든 식별자에 동일하게 적용되진 않는다. 함수 호이스팅 호이스팅은 크게 함수 호이스팅과 변수 호이스팅으로 나뉜다. 그 중에서 함수 호이스팅은 다른 무엇보다 가장 먼저 이루어진다. 그리고..

    브라우저 렌더링 원리

    브라우저 렌더링 원리

    웹사이트 접근 과정 사용자가 웹사이트에 접근하는 과정을 통해 브라우저가 작동하는 과정을 알아보자. 1. 사용자는 브라우저를 실행한다. 2. 사용자가 브라우저의 주소창에 접속하고 싶은 사이트의 URL을 입력한다. 3. 브라우저는 입력된 URL의 서버에게 사용자가 선택한 자원을 받는다. 3-1. 자원은 보통 HTML, CSS, JS, PDF, IMG 등의 형태다. 4. 받아온 자원을 화면에 표현하면 사용자는 정보를 활용한다. 우리가 주로 알고 있는 웹 브라우저는 구글 크롬, 마이크로소프트 에지, 파이어폭스, 사파리 등이 있다. 브라우저의 기본 구조 1. 사용자 인터페이스 주소 표시줄, 이전/다음 버튼, 북마크 메뉴 등. 요청한 페이지를 보여주는 창을 제외한 나머지 모든 부분이다. 2. 브라우저 엔진 사용자 ..