자바스크립트/인터뷰

    First Order Function (일차 함수) 란 무엇인가요?

    first order function 이란 무엇인가요? 일차 함수로 불립니다. 함수의 파라미터로 함수를 받지 않아야 합니다. 함수의 결과로 함수가 나오지 않아야 합니다. const firstOrder = () => console.log("I am a first order function!");

    First Class Function (일급 함수) 이란 무엇인가요

    first class function 이란 무엇인가요 first class function 은 한국어로 번역했을 때, "일급 함수" 라고들 번역합니다. 특정 프로그래밍 언어에서 함수가 변수처럼 다뤄지는 경우, 이를 first class function, 일급 함수라고 합니다. 자바스크립트는 위에서 말한 특정 언어 중 하나입니다. 함수가 변수처럼 다뤄진다는 것은 아래와 같습니다. 함수를 특정 변수에 할당할 수 있습니다. 함수 호출의 인자로 함수를 넘길 수 있습니다. 함수를 반환할 수 있습니다. const a = () => { return "ABC"; }; // 변수에 함수를 할당 setTimeout(() => { console.log("HELLO"); }, 1000); // 함수의 인자로 함수를 넣음 co..

    자바스크립트의 대표적인 함수 정의 문법 두가지에 대해 알고 있나요?

    자바스크립트의 대표적인 함수 정의 문법 두가지에 대해 알고 있나요? function 키워드를 이용해 함수를 정의할 수 있습니다. 괄호와 중괄호만을 이용해 (() => {}) 화살표 함수라 불리는 arrow function 문법으로 함수를 정의할 수 있습니다. function 키워드로 함수를 선언하면 arrow function 과 어떤 점이 다른가요? function 키워드는 생성자로도 쓰일 수 있으며, prototype 프로퍼티를 갖습니다. function 키워드는 함수 선언에도 이용되지만, user-defined object 를 만드는데도 이용됩니다. new 연산자를 앞에 붙이고 해당 함수를 호출하면, prototype 의 constructor 를 호출하여 user-defined object 를 생성합..

    == (non strict euality) 와 === (strict euality) 의 차이를 말해보세요.

    == 와 === 의 차이 둘의 차이를 요약하자면, 묵시적으로 타입을 변환해서 비교하냐 (==) / 타입을 변환하지 않고 비교하냐 (===) 로 축약할 수 있다. == 을 사용하지 않고 === 만 사용하는 컨벤션 하나만 채용하더라도 수많은 버그의 가능성을 막을 수 있다. 동작을 예측하기 힘든 연산자나 키워드를 회피하는 전략이다. == (non strict equality operator) non strict equality operator, 엄격하지 않은 동등성 연산자라고 불린다. 타입 변환 동등성 비교 (type-converting equality comparison) 라고 말할 수 있다. 값 비교를 위해 타입 변환을 진행한 뒤에 값을 비교한다. 이 때문에, === 과 다르게 아래의 결과가 true 가 ..

    자바스크립트의 Object 와 Map 의 차이점에 대해서 얘기해보세요.

    Object 와 Map 비교 Object 는 이전부터 존재했다. 여러 필드와 그에 맞는 데이터, 메서드를 가진 '객체' 로서 사용되기 위해 만들어졌다. Map 은 ES6 에서 새롭게 도입되었다. key 와 value 쌍을 가진 데이터를 손쉽게 다루기 위한 것이 기본 목적이다. 차이 Object 와 Map 은 얼핏보면 Object 가 Map 의 상위호환으로 느껴질 수 있다. 그러나, Object 와 Map 은 특징에 따른 명백한 차이가 있다. 객체의 key 는 String 혹은 Symbol 만 가능하다. const obj1 = {}; const obj2 = {}; const o = { [obj1]: "obj1", [obj2]: "obj2", }; console.log(o); // {[obje..

    자바스크립트의 splice() 함수에 대해 설명해보세요.

    splice() 메서드란? Array.prototype.splice() 와 같이 내장 객체인 Array 의 프로토타입에 존재한다. 원본 배열을 변화시키는 함수이다. 원소를 제거(remove) 하거나, 대체(replace) 하거나, 추가(add) 할 수 있다. 원본 배열을 변화시키는 점이 싫다면, slice() 를 이용하는 것이 좋다. const months = ["Jan", "March", "April", "June"]; months.splice(1, 0, "Feb"); // inserts at index 1 console.log(months); // expected output: Array ["Jan", "Feb", "March", "April", "June"] months.splice(4, 1, "M..

    var 의 문제점을 짚어보고 let, const 와 비교해보세요.

    var 의 문제점과 let, const 와의 비교 함수 레벨 스코프를 갖는다. 루프 내 클로저 문제를 일으킬 수 있다. let 과 const 가 블록 레벨 스코프를 갖는 것과 상반된다. 변수의 중복 선언을 허용한다. 실수로 같은 이름의 변수를 선언하는 문제를 일으킬 수 있다. let 과 const 는 중복된 이름으로 변수 선언 시에 에러가 발생한다. 정의되기 전에 참조가 가능하다. 흔히 말하는 변수 호이스팅 문제를 일으킬 수 있다. let 과 const 도 호이스팅은 일어나지만, 값이 초기화되기 전에는 Temporal Dead Zone 이라는 개념을 사용하여, 접근을 막는다.

    array slice 메서드에 대해서 설명해보세요.

    array slice 메서드란? slice() 메서드는 Array 의 프로토타입에 있는 메서드입니다. (Array.prototype.slice()) 하나의 인자를 받는 경우 해당 인덱스를 포함한 이후의 원소를 가진 배열을 반환합니다. 두개의 인자를 받는 경우 첫번째 인자 인덱스부터 두번째 인자 인덱스 전까지의 배열을 반환합니다. let arrayIntegers = [1, 2, 3, 4, 5]; let arrayIntegers1 = arrayIntegers.slice(0, 2); // returns [1,2] let arrayIntegers2 = arrayIntegers.slice(2, 3); // returns [3] let arrayIntegers3 = arrayIntegers.slice(4); //r..

    JSON 오브젝트에 대해서 설명해보세요.

    JSON 오브젝트란? 데이터 포맷 중 하나인 JavaScript Object Notion 을 파싱하기 위한 메서드를 갖고 있는 오브젝트입니다. 대부분의 자바스크립트 글로벌 오브젝트는 생성자가 있는 반면에 JSON 오브젝트는 생성자가 없습니다. JSON 의 모든 메서드는 static 메서드입니다. JSON 문자열 형태는 네트워크 통신에 많이 이용되며, 파일로 떨어지는 경우 .json 확장자를 갖고, HTTP 통신에서는 application/json 형태의 MIME type 을 사용합니다. JSON.stringify() 메서드의 이름이 역할을 설명하고 있습니다. JSON 을 문자열 (plain text) 로 만들고 싶을 때 사용합니다. JSON.parse() 이름처럼 문자열 (plain text) 을 자바스..

    call, apply, bind 의 차이를 말해보세요.

    call(), apply(), bind() 의 차이는? 차이를 물어보았지만, 먼저 공통점에 대해 간단히 얘기하며 설명하자면, Function.prototype 아래에 있는 메서드들입니다. 그리고 세 함수 모두 this 를 바인딩하는 것과 관련이 있습니다. Function.prototype.call() call() 의 역할은 간단히 설명하자면, 첫번째 인자를 this 로 이용하고 이후의 인자들은 함수의 인자로 이용됩니다. 아래의 코드로 설명할 수 있습니다. function printProductStock(stock) { console.log(`Product name is ${this.name}`); console.log(`Product price is $${this.price}`); console.log(..

    프로토타입 체인 (Prototype Chain) 이란 무엇인가요? 아는대로 말해보세요.

    프로토타입 체인 (Prototype Chain) 이란 무엇인가요? 아는대로 말해보세요.

    프로토타입 체인이란? const a = {}; a. 빈 Object literal notation 으로 a 를 정의한 뒤에 a. 을 콘솔에 입력하면, 아래 이미지와 같이 많은 프로퍼티 후보군이 나온다. 이 때 후보군이 나오는 이유가 바로 프로토타입 체인 때문이다. 우리는 분명 프로퍼티를 정의한 적이 없는데, 정의한적도 없는 프로퍼티를 이용할 수 있는 이유가 바로 프로토타입 체인이다. __defineGetter__ __defineSetter__ __lookupGetter__ __lookupSetter__ __proto__ city constructor greet hasOwnProperty isPrototypeOf propertyIsEnumerable toLocaleString toString valueOf..

    JS 에서 오브젝트를 만드는 방법을 아는대로 말해보세요.

    1. Object 생성자 let object = new Object();다만 퍼포먼스도 안좋고, Object 를 오버라이드하는 경우 예상치 못한 결과가 나올 수 있으니 사용하지 않는 게 좋다. Object lietral notation 이라 불리는 {} 를 사용하는 게 훨씬 퍼포먼스도 좋고 코드도 깔끔하다. 2. Object.create() 메서드 const person = { isHuman: false, printIntroduction: function () { console.log(`My name is ${this.name}. Am I human? ${this.isHuman}`); }, }; const me = Object.create(person); me.name = "Matthew"; // "na..

반응형