일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- callback
- 런타임
- Async
- 비동기
- Git
- OOP
- vanilla javascript
- tar
- await
- 타입스크립트
- 바닐라 자바스크립트
- 역직렬화
- 프론트엔드
- 개발
- ci/cd
- git commit
- Dictionary
- typescript
- 절차지향
- 객체지향
- serialization
- 커밋
- js
- 비동기 처리
- vscode
- 자바스크립트
- Deserialization
- commit
- javascript
- json
- Today
- Total
Hyundolog
[JavaScript] 자바스크립트의 개념 본문
학습목표
Vue.js 를 활용한 프론트엔드 개발을 진행하면서, 자바스크립트 구현 수준을 향상시킬 필요가 있다고 느꼈습니다.
평소에 잘못 사용하고 있거나 효율적이지 못한 부분들을 개선하고자 시작하게 되었습니다.
먼저, 자바스크립트의 탄생 배경부터 개념까지 알아보고자 하였습니다.
정적·동적 언어
우리는 HTML과 CSS를 사용하여 쉽고 빠르게 웹 페이지를 만들어낼 수 있습니다.
하지만, HTML과 CSS는 정적인 언어이기 때문에 화면(웹 페이지)의 특정 부분을 변경하기 어렵습니다.
쉽게 말해서 어떠한 조작에 의해 화면의 일부분 혹은 전체를 변경해야할 때 동적인 언어의 도움이 필요합니다.
예를 들어, 마우스 혹은 키보드를 이용하여 버튼을 누르고 알림창을 띄우는 등의 행위를 떠올려보면 됩니다.
초기의 웹 페이지는 정적이었기 때문에, 사용자와의 상호작용이 어려웠다고 합니다.
(제가 태어나기 전에 있던 일이라..😅)
1990년대 브라우저 업계에서 동적인 웹 페이지의 필요성이 대두되었고, 그렇게 스크립트 언어가 개발되기 시작하였습니다.
넷스케이프(Netscape)의 시도와 노력이 웹 페이지계의 새 시대를 열었다고 해도 과언이 아니라고 생각합니다.
자바스크립트(Javascript)의 역사
넷스케이프의 첫 번째 결과물인 Mocha의 등장부터, 경쟁사들의 스크립트 언어 개발에 가속이 붙기 시작하였습니다.
마이크로소프트(MicroSoft)의 JScript와 넷스케이프의 LiveScript 등이 연이어 탄생하며 점차 활용도가 높아졌지만, 하나의 문제점이 대두되었습니다.
이는 표준 없이 각각의 독자적인 개발이 원인이 된 크로스 브라우징(Cross Browsing) 이슈였습니다.
쉽게 말해서 각자의 브라우저 환경만을 고려하였기 때문에 다른 브라우저에서는 작동이 되지 않는 문제가 발생하였습니다.
이러한 문제를 해결하기 위해 ECMAScript가 등장하게 되면서, 표준에 따라 각각의 기업들은 일관성 있고 호환성 있는 자바스크립트 엔진을 개발할 수 있게 되었습니다.
강력한 성능을 발휘하는 V8엔진은 구글(Google)이 개발한 크롬(Chrome) 브라우저에 장착된 자바스크립트 엔진이며, 이는 곧 브라우저 시장의 판도를 뒤집었고 여러 엔진들의 성능 개선에 많은 영향을 끼쳤습니다.
점차 자바스크립트의 영향력이 방대해지면서 활용 방도가 확대되며 Ajax(Asyncronous javascript and XML), jQuery, JSON, CommonJS, Node.js 등등의 여러 개념이 등장하게 되었습니다.
현재 자바스크립트는 웹 및 모바일 어플리케이션과 서버 프로그램, 게임 등 다양한 분야에서 사용되고 있습니다.
앞으로 ES6 문법을 중점적으로 학습에 임할 계획이며, 다음으로는 자바스크립트의 기본 동작 원리에 대해 알아보고자 합니다.
리뷰
- Ajax, jQuery, JSON, CommonJS에 대한 개념 학습 필요
- ES5와 ES6의 변화 내용 분석 및 학습 필요
'자바스크립트(JavaScript) > 개념정리' 카테고리의 다른 글
[JavaScript] Callback, Promise, async await (0) | 2022.09.07 |
---|---|
[JavaScript] 자바스크립트의 비동기 처리 (0) | 2022.08.17 |
[JavaScript] 객체지향과 프로토타입 (0) | 2022.07.27 |
[JavaScript] 바닐라 자바스크립트란? (0) | 2022.07.25 |
[JavaScript] 자바스크립트의 동작원리 (0) | 2022.07.22 |