TIL #8

김태훈·2023년 2월 14일
0

TIL

목록 보기
7/35

1.해쉬 자료구조

  • 해시(hash)구조란, 키(key)와 값(Value)쌍으로 이루어진 데이터 구조이다.
    해시 구조에서는 key를 이용하여 데이터(value)를 빠르게 찾을 수 있는 장점이 있다.
    이 때 key는 해시 함수(hashing function: key값에 대한 연산을 통해 데이터value 위치를 찾는 함수)를 통해서 해시(임의의 값을 고정 길이로 변환 하는것)로 변경 되어 value값과 매칭되어 저장된다.
    요약하자면 입력값을 넣었을 때 예상치 못한 결과값을 반환하는 해쉬 함수를 이용해 데이터를 키-밸류 값으로 저장하는 자료구조이다.
  • 해시:임의의 값을 고정 길이로 변환 하는것 key값 그대로 저장소에 저장되게 되면 다양한 길이의 저장소를 구성 해야 하기 때문에 효율성을 위해 일관적으로 hash로 변경하여 저장함으로써 공간 효율성을 최적화한다.
    하지만 단점으로 저장할 공간(bucket)을 지정해야 하므로 일반적으로 저장 공간이 많이 필요합니다.

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

  • 반복적인 작업에 효율도를 높이기 위해서 반복적으로 사용되는 이름과 값이 저장된 객체를 그루핑하여 그 안의 내용을 편집(수정, 삭제, 생성, 검색)작업으로 활용하여 그 값들을 활용한다. 또한 인자로 전달되거나 프로퍼티를 이용해 결과를 반환한다.

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

  • 객체는 앞에서와 말한 hash구조로 key와 value가 쌍으로 이루어져 있는데 이런 key와 value의 한 쌍을 프로퍼티라고 한다.
    이 때 key를 프로퍼티, value를 프로퍼티값 이라고도 한다. 참고로 프로퍼티 값 안에는 함수가 올 수도 있는데, 이러한 프로퍼티를 메소드(method)라고 한다. 즉, 자바스크립트 객체의 프로퍼티란 객체의 속성을 말한다.

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

  • 해쉬 자료구조란 앞에서 설명한것 처럼 저장공간을 일관성 있게 저장소를 만들기 때문에 미리 저장소의 공간들이 정해저 있다. 하지만 자바스크립트는 동적 타이핑 언어다. 우리가 js를 편집할때 데이터의 오프셋이 런타임 중에 실시간으로 변하고 해시 저장소들은 동적으로 변하기 때문에 프로퍼티의 생성, 변조에 따라 변경되는 오프셋을 최신 상태로 갱신해 담고 있다고 보장될 수 없기 때문이다. 결론적으로 자바스크립트 객체는 동적으로 변화하는 값들을 받아들일 수 있게 되어있다.
  1. 자바스크립트에서 일급객체란
  • 일급 객체의 조건
  1. 변수에 할당할 수 있다.=(변수나 데이터 구조 안에 담을 수 있다.)
  2. 다른 함수를 인자(argument)로 전달 받는다.=(파라미터로 전달 할 수 있다.)
  3. 다른 함수의 결과로서 리턴될 수 있다.(리턴값으로 사용 할 수 있다.)
  4. 즉 프로그래밍 언어에서 type을 전달, 반환 및 할당 할 수 있는 경우 1급 객체 라고 한다.
  5. 뿐만 아니라 함수를 받을 수 있는 함수를 만들 수 있으니 함수형 프로그래밍으로 자바스크립트가 인기 있는 이유다.

6.다른 언어에서의 함수가 가지고 있는 특징

  • 파이썬
    1. 함수를 변수에 할당할수 있다.
    2. 함수를 함수의 인자로 전달이 가능하다.
    3. 함수를 다른함수 내에서 정의 가능하다.
    4. 함수의 리턴값으로 또 다른 함수를 리턴가능하다.
    5. return, argument type을 따로 지정하지 않고 자동으로 선택된다.
    6. 함수의 이름은 주소를 가리키며, 함수의 타입은 function class로 정의된다.
  • C++
    c++에서는 함수명이 같아도 매개변수의 자료형, 갯수가 다르다면 같은 함수명을 쓸 수 있고, 이것을 함수 오버로딩이라고 한다.
    사용자가 매개변수에 값을 넘겨주지 않으면 자동으로 default값이 지정된다.
    c언어와 다르게 참조자(reference)가 등장하며, 함수의 호출시간을 줄이고자 inline함수가 등장한다.
    또한 c++에서의 함수는 일부 작업을 수행하는 코드 블록이다.

7.생성자 함수에 대해서

  • 조건
    생성자 함수(짧게 줄여서 생성자)는 일반 함수다.
    다만, 일반 함수와 구분하기 위해 함수 이름 첫 글자를 대문자로 쓴다.
    생성자 함수는 반드시 new 연산자와 함께 호출해야 한다.
    new와 함께 호출하면 내부에서 this가 암시적으로 만들어지고, 마지막엔 this가 반환된다.
    여러개의 유사한 객체를 만들어야 할 때 new 생성자 함수를 사용하여 만든다.
profile
개발자(진)

0개의 댓글