본문 바로가기

Backend/Javascript

(4)
Static type language vs Dynamic type language 동적타입언어와 정적타입언어의 차이를 알기 위해, 변수의 타입에 대해서 먼저 알아봅시다. 변수의 타입 변수에 들어갈 데이터의 타입에 따라 나눈 것입니다. (변수가 저장되는 데이터의 종류) C language (정적타입 언어) int, float, char등등 다양한 변수 타입이 존재합니다. 이러한 타입은 컴파일 하면서 결정됩니다. 컴파일 하는 과정에서, #include 헤더파일의 내용을 삽입힙니다. 그러면서 int i = 5를 발견하면 그에 맞는 stack공간에 변수를 할당하여 5를 넣습니다. 모든 코드를 컴파일하면, 링킹을 하여 exe파일을 생성합니다. exe파일을 load하고 프로세스가 실행됩니다. int i = 5는 exe파일이 실행되기 전에 변수의 타입이 정해집니다. 데이터 타입에 1대1 대응하는 ..
Function Scope(ES5) vs Block Scope(ES6) 두 scope의 차이를 더 명확하게 알려면, 자바스크립트가 어떻게 자신이 엑세스 할 수 있는 변수를 어떻게 찾가는 지, 실행하는 원리가 어떠한지 알 필요가 있습니다. 자바스크립트의 작동에 필요한 내부 구조에 대해서 알아봅시다. 실행 문맥의 구성 (Execution Context) 자바스크립트는 실행에 필요한 정보를 저장하는 공간이 있습니다. 바로 실행문맥입니다. 실행문맥은 크게 2가지로 나뉩니다. LexicalEnvironment : 블록의 유효범위 안에 있는 식별자와 그 값이 존재하는 공간. 변수 및 함수를 저장하는 실행공간입니다.(블록 외부도 유효공간입니다. 전역변수를 생각해 보세요.) ThisBinding : 함수를 호출한 객체의 참조가 저장되는 공간. 우리가 잘 아는 this를 말합니다. Lexi..
자바스크립트와 다른언어의 차이점 Javascript와 다른언어와 차별점 1. 자바스크립트는 동적 프로토 타입 기반 객체 지향언어이다. 객체지향언어에는 2가지의 큰 틀이 있다. 클래스 기반 객체지향언어 프로토타입 기반 객체지향언어 우선, 자바스크립도 객체지향언어라는 걸 잊지 말아야 한다. 하지만, Java와 다르게 클래스라는 개념이 없다. ECMAScript5에서 많은 라이브러리가 클래스를 지원한 것처럼 보이게 하는 것들이 있다. 하지만 주의해야한다. 클래스 기반 언어와 다르다(C++, Java) JS의 프로토 타입과 상속에 대해서는 다음 문서를 참고 https://sdcodebase.tistory.com/21?category=861404 자바스크립트의 프로토타입 JS의 프로토 타입 프로토 타입은 JS와 클래스 기반 객체지향언어와 크게 ..
자바스크립트의 프로토타입 JS의 프로토 타입 프로토 타입은 JS와 클래스 기반 객체지향언어와 크게 차이를 주는 부분이다. 프로토타입은 상속과 멤버 함수 추가등에 많이 쓰인다. 각각에 대해서 알아보도록 한다. 1. 생성자 안에서 메서드를 정의하는 방식의 문제점 JS는 생성자 안에 다음과 같이 모든 메서드를 입력할 수 있다. 하지만, 아주 치명적인 문제가 발생한다. 생성자로 생성한 모든 인스턴스에 똑같은 메서드가 추가된다. 생성한 인스턴스만큼 같은 작업을 하는 메서드가 추가된다 . 메모리가 크게 낭비 된다. 2. 프로토 타입 객체 프로토타입 객체를 이용하면, 생성자 안에 있는 프로토타입 프로퍼티가 외부에 정의된 객체 하나를 가리킨다. 그리고 그 프로토타입 객체에 prototype키워드로 지정한 함수들을 저장하는 것이다. 결국, 인스..