[JavaScript] 개념 정리

9999·2021년 12월 19일
0

JavaScript

목록 보기
1/13
post-thumbnail

자바스크립트와 약간의 프로그래밍 개념 정리를 해보겠습니다.

프로그래밍


  • 컴퓨터가 실행을 요구하는 일종의 커뮤니케이션.
  • 문제를 정확히 이해한 후 적절한 해결 방안을 정의 하는 것.

컴파일러(Compiler), 인터프리터(Interpreter)


  • 사람이 이해할 수 있는 자연어와 컴퓨터의 기계어는 체계가 너무 다르기 때문에 둘 다 이해할 수 있는 프로그래밍 언어를 사용해야 함. 이 언어를 기계어로 변환시켜야 하는데 이 역할을 하는 것이 컴파일러, 인터프리터.

함수형 프로그래밍


  • 순수 함수를 통해 부수효과의 오류를 최대한 억제하고 안전성을 높이려는 프로그래밍 패러다임.

객체지향 프로그래밍


  • 객체의 집합으로 프로그램을 표현하려는 프로그래밍.

자바스크립트


  • HTML, CSS와 함께 웹을 구성하는 요소 중 하나로 웹 브라우저에서 동작하는 유일한 프로그래밍 언어.
  • 객체지향 프로그래밍 뿐만 아니라 명령형, 함수형도 지원하는 멀티 패러다임 프로그래밍 언어.

프로토타입


  • 자바스크립트 모든 객체는 부모역할을 담당하는 객체와 연결되어 있는데 이 때 연결된 부모 객체를 프로토타입이라고 함.

변수


  • 하나의 값을 저장하기 위해 확보한 메모리 공간에 이름을 붙인 것.
  • 식별자라고도 함.

var 키워드

  • 변수 이름을 새로운 변수를 선언할 것을 지시하는 키워드.
  • 변수만 선언 되어 있으면 메모리 공간에 undefined라는 값이 암묵적으로 할당되어 있음.
  • let, const 키워드랑 다르게 함수 코드 블록만을 지역 스코프로만 인정해서 그 외에는 모두 전역 스코프를 가짐.

let 키워드

  • var 키워드의 단점(변수 중복 선언, 호이스팅, 블록 레벨 스코프)을 보완하기 위해 ES6에 새로 도입된 키워드.

const 키워드

  • 상수라서 값을 변경할 수 없음.
  • 선언단계에 선언, 초기화, 할당을 모두 끝냄.

호이스팅

  • 변수가 어디에 위치하던지 상관없이 참조할 수 있는 특징.
  • var키워드가 가능한 이유 → 실행 컨텍스트에 의한 소스코드평가 과정에서 변수 선언을 이미 참조했기 때문.

데이터 타입


  • 종류
    • Number
    • String
    • Boolean
    • Undefined
    • Null
    • Symbol
    • Object

데이터타입이 필요한 이유

  • 값을 지정할 때 확보해야 하는 메모리 공간의 크기를 결정하기 위해.
  • 데이터 최적화를 위해.

정적 타이핑

  • 변수에 타입을 변경할 수 없으며, 타입에 맞는 값만 할당할 수 있음.
  • 대표적 언어: C, C++, 자바, 코틀린, 고, 러스트 등

동적 타이핑

  • 언제든지 타입변경이 가능한 것.
  • 할당에 의해 타입이 결정되는 것.
  • 대표적 언어: 자바스크립트, 파이썬, PHP 등

배열


  • 흔히 배열은 동일한 크기의 메모리 공간이 빈틈없이 연속적으로 나열된 자료구조라고 함. (밀집 배열)
  • 자바스크립트 배열은 일반적인 의미의 배열과 다른 희소 배열임.
  • 희소 배열이란 배열요소가 연속적으로 이어져있지 않은 배열을 의미.
  • 자바스크립트 배열은 일반 배열보다 접근속도는 느리지만 검색, 삽입 또는 삭제할 경우엔 더 빠름.

함수


함수 호이스팅

  • 함수 선언문이 코드의 선두로 끌어 올려진 것처럼 동작하는 것. (JS고유의 특징)

고차함수

  • 함수를 인수로 전달 받거나 함수를 반환하는 함수.
  • JS함수는 일급 객체이므로 고차함수 사용가능.

즉시실행함수

  • 함수 정의와 동시에 즉시 호출되는 함수.
  • 한 번 호출되며 다시 호출할 수 없음.
  • 익명함수로 사용하는 것이 일반적임.

forEach와 map의 특징

  • 배열의 모든 요소를 순회하면서 인수로 전달받은 콜백함수를 반복 호출한다는 공통점이 있음.
  • forEach는 언제나 undefined를 반환함.
  • map은 콜백 함수의 반환값들로 새로운 배열을 반환함.

함수와 메서드의 차이점

  • 프로퍼티 값이 함수라면 그 함수를 참조하고 조작할 수 있는 동작을 메서드라고 함.

생성자 함수를 사용하는 이유

  • 같은 프로퍼티를 갖는 객쳋를 여러 개 생산해야 하는 경우.

객체


  • 원시 값 또는 다른 객체를 하나의 단위로 구성한 복합적인 자료구조.
  • 자바스크립트는 객체 기반의 프로그래밍 언어이며, 자바스크립트를 구성하는 거의 모든 것이 객체.

일급 객체

  • 무명의 리터럴로 생성 가능한 것.
  • 변수나 자료구조에 저장할 수 있음.
  • 함수의 매개변수에 전달할 수 있음.
  • 함수의 반환 값으로 사용할 수 있음. ⇒ 이 조건을 다 만족하는 객체.

래퍼 객체 (Wrapper Object)

  • 원시 타입을 마치 객체 타입처럼 사용하는 것.
  • 객체처럼 (.)으로 접근하면 JS엔진이 일시적으로 객체로 변환해 주고 다시 원시 값으로 되돌림.

스코프


  • 식별자가 유효한 범위.
  • JS엔진은 스코프를 통해 어떤 변수를 참조해야 할 것인지 정함.

렉시컬 스코프 (정적 스코프)

  • 함수를 어디서 정의했는지에 따라 함수 상위 스코프를 결정하는 것.

전역 변수를 선언하면 생기는 문제점

  • 암묵적 결합
    • 스코프가 클수록 가독성은 나빠지고 의도치않게 상태가 변경될 수 있음.
  • 변수의 긴 생명주기
    • 메모리 리소스 오랜 시간 소비.
  • 스코프 체인 상에서 종점에 존재
    • 전역 변수의 검색 속도가 가장 느림.
  • 네임스페이스 오염
    • 같은 이름이 존재할 경우 코드의 혼란이 올 수 있음.

This


  • 자신이 속한 객체 또는 자신이 생성할 인스턴스를 가리키는 자기 참조 변수.
  • 자바스크립트 엔진에 의해 암묵적으로 생성됨.
  • this바인딩은 함수 호출 방식에 의해 동적으로 결정됨.
    • 일반 함수 호출
      • 기본적으로 this는 전역 객체가 바인딩 됨.
      • 일반 함수에서 this는 딱히 의미가 없음.
    • 메서드 호출
      • 메서드를 호출한 객체에 바인딩 됨.
    • 생성자 함수
      • 미래에 생성할 인스턴스가 바인딩 됨.

0개의 댓글