[220825] 오늘의 배움(TIL) - JavaScript

💛 nalsae·2022년 8월 25일
1

📚 오늘의 배움(TIL)

목록 보기
34/84
post-thumbnail

🔶 JavaScript

  • ES6 이후에는 함수를 왜 구분해놓았는가?

: 특정한 상황과 목적에 맞는 함수를 생성하기 위한 목적
: ES6 이전에는 메서드를 생성자 함수로서 사용할 수 있었고, 에러를 발생시킬 우려가 있기 때문에 ES6에서는 메서드 축약 표현을 사용하여 이를 최소화할 수 있음

  • 함수를 구분 없이 사용하는 경우 안 좋은 점은 무엇인가?

: 생성자 함수로 사용할 일이 없는데 생성자 함수의 프로퍼티를 가지게 되면 사용하기도 복잡하고 메모리가 낭비되어 성능이 저하됨

  • 화살표 함수가 this, super 바인딩을 가지지 않는 이유는 무엇인가?

: 애초에 thissuper 키워드는 생성할 인스턴스를 참조해야 하는 메서드 내에서만 의미가 있기 때문에 사용 목적에 부합하지 않음

  • 화살표 함수는 어떤 상황에서 유용하게 사용할 수 있는가?

: 일반 함수보다 내부 동작이 간편하고 성능과 가독성 면에서도 더 유리하기 때문에 생성자 함수와 메서드로 사용할 일이 없다면 언제든지 유용하게 사용할 수 있음

  • 전역에 선언한 클래스 내부에 클래스 필드로 메서드에 화살표 함수를 할당한다면, 그 화살표 함수의 내부에서 사용한 this는 어디에 바인딩되는가?

: constructor 함수가 가지는 this 바인딩의 값
: 원래는 클래스 필드의 상위 스코프가 전역 스코프이므로 window를 가리키는 것이 정확하지만 클래스 필드로 할당한 메서드의 thisconstructorthis를 가리키도록 특수하게 설계됨

  • ES6 이후에 유사 배열 객체 대신 배열을 사용하는 이유는 무엇인가?

: 배열 빌트인 메서드를 사용하려면 Function.prototype.call등의 메서드를 사용해야 하기 때문에 가독성이 좋지 않음

  • 자료구조 관점에서 배열이 가지는 장단점은 무엇인가?

: 배열은 임의 접근에 최적화되어 있음, 첫 번째 요소든 세 번째 요소든 동일한 시간 복잡도를 가지기 때문
: 그러나 중간의 요소를 변경하는 경우 그 앞뒤의 요소까지 다 옮겨야 하기 때문에 요소의 삽입, 삭제에는 성능이 좋지 않음

  • 배열은 어떤 경우에 사용해야 하는가?

: 데이터를 추가 및 삭제하는 일이 적고, 접근 및 조회하는 일이 많은 경우에 사용하는 것이 바람직함

  • 배열의 요소에 동일한 데이터 타입을 삽입하는 것이 바람직한 이유는 무엇인가?

: 배열의 목적 자체가 순회하면서 요소에 동일한 로직을 적용하기 위한 것인데, 요소의 데이터 타입이 다 다르다면 요소에 동일한 로직을 적용할 수 없기 때문에 배열의 목적에 위배되기 때문

  • 배열 메서드 중에서도 고차함수를 사용하는 것이 바람직한 이유는 무엇인가?

: 원본 배열을 조작하게 되면 코드의 라인 수가 많아졌을 때 그 원본 배열을 추적하는 일이 힘들어지므로 가독성이 좋지 않음
: 함수형 프로그래밍 관점에서도 순수 함수를 지향해야 하므로 외부 상태인 원본 배열을 변경하지 않는 것이 바람직 함

  • 배열 메서드 중 map, filter는 어떤 과정으로 동작하는가?

: 콜백 함수의 매개변수로 무조건 요소 값, 인덱스, this를 넘겨줌
: 콜백 함수의 반환 값으로 새로운 배열 요소를 반환함

  • map, filter, reduce는 각각 어떤 상황에 사용하는 것이 바람직한가?

: map은 원본의 요소를 토대로 원본과 length가 동일한 새로운 배열을 반환할 때 사용
: filter는 원본의 요소를 토대로 원본과 length가 동일하거나 더 적은 새로운 배열을 반환할 때 사용
: reduce는 원본의 요소를 토대로 반환하는 값이 단 하나인 경우에 사용

profile
𝙸'𝚖 𝚊 𝚍𝚎𝚟𝚎𝚕𝚘𝚙𝚎𝚛 𝚝𝚛𝚢𝚒𝚗𝚐 𝚝𝚘 𝚜𝚝𝚞𝚍𝚢 𝚊𝚕𝚠𝚊𝚢𝚜. 🤔

0개의 댓글