이번 주 Keyword : 함수와 객체, 데이터 타입, 실행 컨텍스트
함수 : 함수는 특정 작업을 수행하기 위해 설계된 기능이다.
생성자 함수 란?
- "객체"를 생성할 때 사용하는 함수
생성자 함수의 필요성?
- 여러개의 동일한 프로퍼티를 가지는 객체를 생성하기 위해서 필요
- Prototype을 이용하여 메모리 절감을 위해서도 필요
생성자 함수의 형태
- 생성자 명 : 대문자로 시작 (일반 함수와 구별을 하기 위한 관례 입니다)
- 내부의 식별자 선언(var 식별자) 없음
- 내부의 메소스 선언(var 식별자 = function (){}) 없음
- "this.프로퍼티"를 통해서 프로퍼티 명시만 가능
객체 : 객체는 어떤 속성값과 행동을 가지고 있는 데이터
데이터 타입 :
우선 타입을 지정하기 이전에 타입에는 number, string, boolean, object 등이 있다.
이 타입에도 유형이 있는데 동적 타입과 정적 타입이 존재한다.
동적 타입은 내가 지금까지 써왔던 JavaScript, Python 이 있다.
동적 타입의 언어 자료형은 컴파일 시 자료형을 정하는 것이 아니고, 실행할 때 결정된다.
장점은 우리 같은 프로그래머들이 굳이 타입을 고민할 필요 없이 빠르게 코드 작성이 가능하다.
하지만 이러한 이유로 실행 도중에 변수에 예상치 못한 타입이 들어와서 TypeError이 발생할 수 있다.
이와 반대로 정적 타입 언어로는 C, C#, C++, Java, & TypeScript가 있다.
정적 언어를 간단히 정리하자면, 변수 생성 시 타입을 같이 명시해주는 것이다.
이러한 이유로 정적 언어의 장점으로는 컴파일 시 미리 타입에 대한 정보를 결정했기 때문에, 실행 속도가 빠를 수 있다.
그리고, 타입 에러로 인한 문제점을 초기에 발견할 수 있어서 안정성이 높다. 하지만, 매번 코드를 입력할 때, 변수형을 결정해줘야 하는 우리에게 번거로움이 있을 것이다.
자바의 데이터 타입 지정하는 예시를 보여주겠다.
변수 선언의 예
int i;
double d;
char c1, c2;
왼쪽에 파란 글씨로 표현된게 데이터 타입이고, 오른쪽에 있는 i, d, c1, c2가 모두 변수명이다.
만약 같은 데이터 타입의 변수 여러개를 동시에 선언하고 싶다면 변수명을 콤마(,)로 구분해서 작성한다.
실행 컨텍스트 :
❓ 1.우리가 실행 컨텍스트를 제대로 이해하지 못한다면 어떤 문제가 일어날까요?
주재훈 :
우선 실행 컨텍스트의 정의는 실행할 코드에 제공할 환경 정보들을 모아놓은 객체로서, 동일한 스코프에 있는 코드들을 실행할 때 필요한 환경 정보를 모아 컨텍스트를 구성하고, 이를 호출 스택(콜 스택)에 쌓아서 실행 순서를 보장합
여기서 말을 풀어보자면, 아래에 있는 스코프라는 단어도 들어가 있다.
조금 더 쉽게 풀어서 설명하자면, 우리가 실행할 코드에 가져다 줄 정보들을 모아놓은 객체인데, 같은 유효범위 내에 있는 코드들을 실행할 때 필요한 유효 정보를 모아서 문맥을(컨텍스트를) 구성하고 이것을 호출하는 처리업무에 쌓아서 실행 순서를 지켜준다는 것이다.
실행 컨택스트는 실행 문맥이라는 우리말로 이해하면 이해하기 쉽다.
문맥상 맞지않는 곳에 만약 함수가 실행이 되거나 변수가 선언이 된다면, 컴퓨터는 작성자가 하고자하는 logic을 알아차리지 못하고 원하지 않는 값을 출력할 가능성이 크다.
'📘 𝐭𝐢𝐥 > 주간회고' 카테고리의 다른 글
[23.02.19][스파르타 코딩클럽]_ 11주차_ 05주차 (0) | 2023.02.19 |
---|---|
[23.02.12][스파르타 코딩클럽]_ 10주차_ 04주차 (0) | 2023.02.13 |
[23.01.15][스파르타 코딩클럽]_ 6주차_ OT주차 (4) | 2023.01.15 |
[스파르타 코딩클럽]_웹개발 종합반 5주차 마무리 그리고 OT (2) | 2023.01.09 |
[스파르타 코딩클럽]_웹개발 종합반 4주차 마무리 (2) | 2023.01.01 |