1. JavaScript 훑어보기
1.1. 자바스크립트는 인터프리터 언어
코드는 사람이 작성하기 때문에 사람이 이해할 수 있는 언어로 작성되고, 컴퓨터가 읽을 수 있는 기계어로 번역된다. 기계어로 번역되는 방식은 언어마다 다른데, 번역 방식에 따라 컴파일러 언어, 인터프리터 언어 2가지로 나뉜다. 컴파일러 언어는 한 번에 번역을 하고, 인터프리터 언어는 한 줄 한 줄 번역을 하면서 실행된다.
자바스크립트는 Interpreter 언어로 컴파일 단계가 없고(컴파일러 언어가 아니기 때문) 컴파일러 언어에 비해 실행속도가 느린데, 모던 브라우저 내의 V8 엔진에서는 컴파일 과정이 포함되어 속도가 개선되었다.
1.2. 자바스크립의 특징
- 동적 타입 언어: 변수에 들어가는 값에 따라서, 런타임에 타입이 추론됨
- 일급 객체: 함수는 일급객체의 특징을 가짐
- 프로토타입 기반의 상속: 프로토타입 체이닝 구조를 통하여 상속 가능 (다른 언어와 같이 클래스 기반X)
- 여러 프로그래밍 패러다임 지원: 명령형/함수형/객체지향형 ..
1.3. 자바스크립트의 탄생 배경와 ECMAScript
기술은 시간이 지나면서 발전하고 특정 시점을 기준으로 개선되는데, 특정 시점을 기준으로 개선된 것을 버전으로 관리한다.
자바스크립트는 1995년 넷스케이프의 개발자 Brendan Eich 에 의해 만들어졌는데, 처음에는 웹페이지의 보조적인 기능을 수행하기 위해 만들었다고 한다. (추가로 자바스크립트의 이름 변천사: 모카 -> 라이브스크립트 -> 자바스크립트)
당시에 여러 회사들은 자사 소프트웨어의 사용 점유율을 높이기 위해 브라우저마다 동작하는 기능을 경쟁적으로 추가하고 있었기 때문에, 같은 자바스크립트 파일이어도 어떤 브라우저에서는 동작하고 어떤 브라우저에서는 동작하지 않는 상황이 발생하였다. (크로스 브라우징 이슈)
크로스 브라우징 이슈로 인해 표준화 개발이 진행되었고, 1997년 ECMA 총회 때 해당 안건이 채택되어 ECMA-262의 표준화 목록에 추가되었다. ECMA-262 기술 규격에 따라 정의하고 있는 Script 언어를 ECMAScript 라고 한다.
1.4. ECMAScript2015(ES6)
- ES6 버전 배포를 위해 15년간 작업함
- 대규모 어플리케이션, 라이브러리 생성, 다른 언어의 컴파일 등의 스펙을 내놓음
- 개선 사항으로는 모듈, 클래스 선언, 블록레벨 스코프, iterator와 generator, 비동기 프로그래밍 등이 있음
브라우저는 ECMAScript의 기준을 따라가지 않기 때문에 버전마다 지원하는 자바스크립트 스펙이 상이하다. 개별 기능의 지원은 Caniuse 와 같은 서비스에서 확인 가능하다.
- 개발에는 사용하고 싶은데 브라우저 지원이 안될 경우?
polyfill
- 지원하지 않는 브라우저에서 최신 기능을 제공하기 위해 필요한 코드
- 폴리필은 브라우저가 다른 방식으로 동일한 기능을 구현하는 문제를 해결하는데 사용
Babel
- 이전 버전의 브라우저에서 ES6 이전 버전의 자바스크립트로 변환하는데 사용하는 도구
- 문법을 번역 및 변환
- 폴리필 기능
2. JavaScript
[JavaScript] 기초 - 데이터와 형태
변수 생성 방법과 호이스팅 자바스크립트 엔진은 소스코드 평가 단계를 거쳐 실행 단계로 가게 되는데, 변수 생성은 평가 단계와 실행 단계에서 이루어진다. 변수 생성 단계1. 선언 단계: 변
everydayc0ding.tistory.com
[JavaScript] 기초 - 데이터 처리1
연산자 - 단항연산자, 산술 연산자 단항 연산자void: 표현식을 평가할 때 값을 반환하지 않도록 지정typeof: 평가 전의 피연산자 타입을 나타내는 문자열을 반환delete: 객체의 속성을 삭제const a = { n
everydayc0ding.tistory.com
[JavaScript] 데이터 처리 - 기초4
프로토타입과 생성자 함수 객체는 현실의 개념을 추상화하여 정의한 것으로 상태와 속성, 메서드를 가지고 있다. 자바스크립트는 프로토타입 기반객체지향 프로그래밍이다. 여기서 객체지향
everydayc0ding.tistory.com
'TIL with Programmers' 카테고리의 다른 글
[TIL] 10/28 타입스크립트 기초-1 (0) | 2024.10.28 |
---|---|
[TIL] 10/22 JS 기초2 (2) | 2024.10.22 |
[TIL] 10/17 도서 API, 장바구니 API 수정 (feat.JWT) (2) | 2024.10.20 |
[TIL] 10/16 JWT - TokenExpiredError, JsonWebTokenError, authorization, ERR_HTTP_HEADERS_SENT (0) | 2024.10.16 |
[TIL] 10/15 MySQL 데이터 삭제-DELETE/DROP/TRUNCATE, 주문하기 API (0) | 2024.10.15 |