<aside> 💡 Q1. 각각 하나의 질문에 답해주세요, 그 답은 나머지 조원들에게 이해시켜주세요. 모두 이해가 되었다면 답변을 옮겨적어주세요

  1. 해쉬 자료구조란? 키(Key)와 값(Value)쌍으로 이루어진 데이터 구조. Key를 이용해서 Value를 빠르게 찾을수 있음.

  2. 자바스크립트 객체로 주로 하는일이란?

  3. 자바스크립트 객체의 프로퍼티란?

  4. 단순한 해쉬와 자바스크립트 객체의 차이점이란?

  5. 함수와 메서드의 차이는 무엇일까요? 가장 핵심적인 차이는 무엇이고, 왜 굳이 이렇게 구분했을까요?

    종속성의 차이. 함수는 독립적으로 존재하나 메소드는 클래스 내부에 종속되어있다.

    메소드의 장점은 반복되는 연산을 정의하여 중복되는 코드의 반복적인 프로그래밍을 피할 수 있다는 점이다. 아래와 같이 작성할 경우 동일 클래스 내에서 해당 연산을 리턴시키므로 연산식을 재차 적지 않고도 사용이 가능하다. 또한 문제가 발생했을 경우 혹은 기능의 변경이 필요할 경우 유지보수에 용이하다는 점이 있다.

    int add (int a, int b) { // 메소드타입 메소드명(파라미터~){
    	int c=0;      //	실행문;
    	c=a+b;
    	return c;
    }
    
  1. 자바스크립트에서 일급객체란? 왜 그건 일급객체일까요?

    일급객체(First-class Object): 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체. (자바스크립트 내에서의 함수가 변수에도 담을 수 있고, 다른함수의 인자로도 사용이 가능한 이유는 일급객체(함수)이기 때문)

    일급객체의 조건

    1. 변수에 할당(assignment)할 수 있다. (함수 표현식이나 메서드 참고)

    2. 다른 함수를 인자(argument)로 전달 받는다.

    function mul(num) {
      return num*num;
    }
    
    // func는 매개변수임, 이름은 아무거나 지정해도 상관없음
    function mulNum(func, number) {
      return func(number);
    }
    
    let result = mulNum(mul, 3); // 9
    
    1. 다른 함수의 결과로서 리턴될 수 있다.
    function add(a) {
    	return function(b) {
    	return a + b;
    	}
    }
    

    위 조건내에서 함수를 데이터 다루듯 할당이 가능하다는 점을 알 수 있다. 함수가 일급객체일때 가능한 일로는 고차함수(Higher order function)를 만들 수 있고, 콜백(callback)을 사용할 수 있다.

  2. 다른 언어에서의 함수는 어떤 특징이 있나요?

  3. 생성자 함수에 대해서 조금만 더 설명해줄 수 있나요?