단어장

JUNHO YEOM·2023년 1월 12일
0

개념

목록 보기
2/6

목차

자료구조
호이스팅
플랫폼
객체
인터페이스
Micro Service Architecture
일급 객체
리터럴
타입추론
약타입
강타입
Type Inference
Dynamic Typing
연결리스트
이진트리
Parameter & Argument
Function-level scope
Block-level scope
scope의 종류

자료구조

프로그래밍에서 데이터를 구조적으로 표현하는 방식과 이를 구현하는 데 필요한 알고리즘에 대해 논하는 기초이론



호이스팅

JavaScript

모든 선언 구문이 코드의 최상단으로 끌어 올려 지는 현상

먼저 코드를 한번 보겠습니다.
해당 코드는 오류가 날까요? 정상적으로 실행 될까요?

console.log(result); // result 실행해줘

var result = 100; // result = 100 선언

콘솔에는 에러가 발생하지 않고 undefined가 출력됩니다.
JS에서 이건 오류가 발생하지 않아요 호이스팅 때문이에요
JS는 2가지 Phase로 실행됩니다.

Creation Phase

  • 모든 선언 구문을 찾아서 식별자를 메모리에 매핑(변수화) 시킵니다.

Execution Phase

  • 처음으로 돌아가서 실행 구분을 찾아 실행 시킵니다.

var, let, const모두 hoisting이 적용 됩니다.(심지어 함수에서도)

다시 코드를 볼게요

1. Creation Phase
console.log(result); 
var result = 100; // 선언 구분만 찾아서 변수화 합니다.
// result라는 변수가 있네! 까지 실행하고 이를 undefined로 저장해놔요

2. Execution Phase
console.log(result); // 실행구문을 실행해요 변수 result? 찾았다!
// undefined가 메모리에 저장되어 있네? 출력!
var result = 100; // 여기서 result에 100이라는 값이 할당되어요

지금까지는 var에 의해서 선언된 경우를 확인했어요.

하지만 let, const는 선언만 되고, 초기화가 되지 않으면
Temporal Dead Zon(TDZ)이 발생해서
초기화 하기 전까지는 사용할 수 없습니다.

1. Creation Phase
console.log(result); 
var result = 100; // 선언 구문만 찾아서 변수화 합니다.


2. Execution Phase
console.log(result); // TDZ => error!!에 걸렸어요
// TDZ
var result = 100; // 여기서 초기화 하고부터 실행해야 오류가 나지 않아요


플랫폼

다른 프로그램을 실행시킬 수 있는 프로그램
Java는 플랫폼일까?

객체

인터페이스

인터페이스란?

인터페이스는 왜 필요할까


Micro Service Architecture



일급 객체

일급 객체는 다음의 4가지 조건을 충족하는 객체를 말합니다.
1. 익명의 literal로 생성이 가능 하다
2. 변수에 저장 될 수 있다
3. 함수의 인자로 전달 될 수 있다
4. 함수의 리턴값으로 사용될 수 있다

자바스크립트의 함수는 일급 객체의 조건을 충족합니다.

일급 객체로 할 수 있는 것

0부터 입력받은 수 까지 출력하는 repeat가 있었습니다.
우리는 repeat에 함수의 파라미터로 f를 넣어서
홀수를 출력하게 하거나, 전체를 출력하게 바꿀 수도 있습니다.

// 고차함수(Higher-Order Function)
// 근본이 되는 함수
function repeat(n, f) {
  for (let i = 0; i <= n; i++) {
    f(i);
  }
}


// 콜백함수(callback function)
let printAll = function (i) {
  console.log(i);
};

let printOdd = function (i) {
  if (i % 2 == 1) {
    console.log(i);
  }
};

// parameter f의 자리에 어떤 함수(callback 함수)가
// 오는지에 따라 실행 결과가 달라집니다.
repeat(10, printAll); // 0부터 10까지 출력하게 됩니다.

repeat(10, printOdd); // 0부터 10까지의 홀수만 출력합니다.

예시에서 repeat(n, f) 함수는 parameter f를 함수로 받아
내부를 추상화 하였습니다.
f에 어떤 함수가 들어오는지에 따라 기존의 핵심 로직을 유지한 채로 내부의 실행 방식은 다르게 실행 할 수 있습니다.
이때 핵심 로직을 가진 함수를 고차함수
추상화 되어 리턴값에 영향을 끼치는 함수를 callback 함수라고 합니다.


리터럴



타입추론



약타입



강타입



Type Inference



Dynamic Typing



연결리스트



이진트리



Parameter & Argument

Parameter

  • 함수의 정의할때 전달받은 인수를 함수 내부로 전달하기 위해 사용하는 변수를 말합니다.

Argument

  • 함수를 호출할 때 함수로 값을 전달 해주는 값을 말합니다.
// x, y를 parameter라고 해요
function myFunc(x, y) {
	return x + y;
}

// 10, 20은 argument라고 해요
myFunc(10, 20);


Function-level scope



Block-level scope



scope의 종류

dynamic scope : 함수의 호출 위치에 따라 scope가 결정

lexical scope: 어디서 만들어졌는지에 따라서 scope가 결정

0개의 댓글