항해 2주차 WIL

youngsung·2023년 2월 19일
0

TIL

목록 보기
4/5

JS 함수와 객체, 데이터 타입, 실행 컨텍스트

  • 객체 :
    object라고 불리며 객체란 이름과 값으로 구성된 프로퍼티의 정렬되지 않은 집합이다.
    프로퍼티값으로 함수가 올수도 있는데 이러한 프로퍼티를 메소드(Method)라고 한다.
    자바스크립트의 객체는 키와 값으로 구성된 프로퍼티들의 집합

  • 프로퍼티 :
    프로퍼티는 키(key) : 값(value) 의 형식이다.
    key는 속성명이라 생각해도되고 문자열만 가능하다
    value는 속성값이라 부르며 어떤값(문자열 숫자 객체 함수등)이든지 상관없다.

  • 함수 :
    작업을 수행하거나 값을 계산하는 명령문의 집합인 프로시저(procedure)와 비슷하지만
    프로시저가 함수로 쓰이려면 입력을 반드시 받아야하고 입려과 명확한 관계가 있는 출력을
    반환해야 한다. 또 함수를 사용하려면 함수를 호출할 스코프 내에서 함수를 정의 해야 한다.
    ※프로시저 : 어떤 임무를 수행하기 위한 절차를 뜻한다.

question1

  1. 해쉬 자료구조란? :
    단순하게 key - value로 이루어진 자료구조라고 생각하면 된다.
  • hash Function
    해시와 해시테이블을 제대로 알기전에 Hash Funtion(해시 함수) 라는 것을 알아야 한다. 자료구조를 배우는 이유는 원하는 값을 최대한 효율적으로 찾을수 있게하기 위해서 여러가지 저장구조를 배우는 것이다. 데이터를 최대한 빠르게 찾기 위해서는 저장하는 위치도 잘 생각해서 저장해야 한다. 해시 함수의 정의는 key를 고정된 길이의 hash로 변경해주는 역할을 한다. 이 과정을 hashing이라고 한다. key를 해시함수라는 함수에 Input으로 넣어서 Ouput으로 나오는 것이 Hash(해시)라고 생각하면 되고, 이 Hash(해시)가 저장위치가 된다고 생각하면 된다. 결국 Hash Function는 key로 해시를 만들어내는 함수이다.
  1. 자바스크립트 객체로 주로 하는일이란? :
    자바스크립트의 객체는 키와 값으로 구성된 프로퍼티들의 집합

  2. 자바스크립트 객체의 프로퍼티란? :
    서랍장 안에 이름표가 붙어 있는 파일이라고 생각하면 된다
    객체(서랍장) 안에 선언된 key(이름표)와 value(내용)으로 이루어진
    한 쌍(파일)을 말한다.
    프로퍼티는 프로퍼티 키로 유일하게 식별할 수 있다.
    즉, 프로퍼티 키는 프로퍼티를 식별하기 위한 식별자이다.

  3. 단순한 해쉬와 자바스크립트 객체의 차이점이란?
    자바스크립트는 동적언어라서 런타임 중에 데이터의 상대주소인 오프셋이 실시간으로 바뀌는데
    동적 형태인 해시테이블은 최신 상태로 갱신하여 프로퍼티의 변경된 오프셋을 갱신할 수 없다.
    해시는 자료를 저장하는 데이터 기법이고
    즉 해시함수라는 것을 통해 저장하는 방식이고 객체는 키와 값으로 된
    프로퍼티를 저장한 것이다 해시함수를 쓰는 것이 아니라 단순하게 저장된 방식

question2

  1. 자바스크립트에서 일급객체란? 왜 그건 일급객체 일까요?
    일급객체 : 일급객체(First-class Object)란 다른 객체들에 일반적으로 적용 가능한 연산을 모두 지원하는 객체를 가리킨다.
    일급 객체에서 일급 이란 뜻은 사용할 때 다른 요소들과 아무런 차별이 없다는 걸 말한다.
    보통 일급 객체는 3가지의 조건을 충족한 객체(함수 등)를 말한다.
  • 변수나 데이터에 담을 수 있어야 한다.
  • 함수의 파라미터로 전달할 수 있어야 한다.
  • 함수의 리턴 값으로 사용할 수 있어야 한다.

일급 객체는 어떠한 특정 언어에 국한되는 문법 단어가 아니다
프로그래밍 언어론의 개념으로 파이썬, 자바스크립트 등이 일급 객체 개념을 가지고 있다.

  1. 다른 언어에서의 함수는 어떤 특징이 있나요?
    C : 함수 선언시 자료형 명시해야하며, return 값이 정해져 있지 않다.
    파이썬 : return, argument type을 따로 지정하지 않고 자동으로 선택된다.
    자바스크립트에서의 함수는 일급객체이다.
    다른언어에서는 함수가 값이 될 수 없지만, 자바스크립트에서는 값이 될 수 있다.
    (값이기 때문에 변수로 할당하고, 다른 함수의 인자로 전달되고,
    반환 값으로도 사용 할 수 있다.)

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

  • 생성자 함수란 ‘객체’를 생성할 때 사용하는 함수이다.
  • 여러개의 동일한 프로퍼티를 가지는 객체를 생성하기 위해서 필요하다.
  • 생성자 명은 일반 함수와 구별하기 위해 대문자로 시작한다.
  • new 키워드를 통해 생성자 함수를 호출한다.
  • 또한 부모함수명.prototype.생성할함수명 = function() {}으로도
    생성 가능하다.

데이터 타입

Javascript 타입

JavaScript는 느슨한 타입(loosely typed)의 동적(dynamic) 언어입니다. JavaScript의 변수는 어떤 특정 타입과 연결되지 않으며, 모든 타입의 값으로 할당 (및 재할당) 가능합니다.

  • 원시 값 (언어의 최고 로우레벨에서 직접 표현되는 불변 데이터)
  • Boolean 타입
  • Null 타입
  • Undefined 타입
  • Number 타입
  • BigInt 타입
  • String 타입
  • Symbol 타입
  • 객체 (속성의 컬렉션)

원시 값

객체를 제외한 모든 타입은 불변 값(변경할 수 없는 값)을 정의합니다. 예를 들어 (C 언어와는 달리) 문자열은 불변합니다. 이런 일련의 타입을 "원시 값"이라고 합니다.

Boolean 타입

Boolean 타입은 논리 요소를 나타내며 true와 false 두 가지의 값을 가질 수 있습니다.

Null 타입

Null 타입은 null 하나의 값만 가질 수 있습니다.

Undefined 타입

값을 할당하지 않은 변수는 undefined 값을 가집니다.

Number 타입

ECMAScript는 Number와 BigInt 두 가지의 내장 숫자 타입을 가지고 있습니다.

BigInt 타입

BigInt 타입은 임의 정밀도로 정수를 나타낼 수 있는 JavaScript 숫자 원시 값입니다. BigInt를 Number의 안전 한계를 넘어서는 큰 정수도 안전하게 저장하고 연산할 수 있습니다.

BigInt는 정수 끝에 n을 추가하거나 생성자를 호출해 생성할 수 있습니다.

String 타입

JavaScript의 String 타입은 텍스트 데이터를 나타낼 때 사용합니다. String은 16비트 부호 없는 정수 값 "요소"로 구성된 집합으로, 각각의 요소가 String의 한 자리를 차지합니다. 첫 번째 요소는 인덱스 0에, 그 다음 요소는 인덱스 1, 그 다음은 2, ...입니다. String의 길이는 그 안의 요소 수와 같습니다.

C 언어와 같은 일부 프로그래밍 언어와 달리 JavaScript 문자열은 불변합니다. 즉 문자열을 생성한 후 바꾸는 것은 불가능합니다.

Symbol 타입

Symbol은 고유하고 변경 불가능한 원시 값이며 객체의 속성(아래를 참고하세요) 키로 사용할 수 있습니다. 어떤 프로그래밍 언어들에선 "아톰"이라고 부르기도 합니다.

객체

컴퓨터 과학에서의 객체란 식별자로 참조할 수 있는 메모리 상의 값을 말합니다.


아직 실행컨텍스트는 배우지를 않아 공부를 시작했다. 아직 배움에있어서 많이 어려움을 느낀다. 포기하지않는 마음을 가지는게 제일 중요!!!

profile
To Infinity and Beyond

0개의 댓글