문제를 정확히 이해한다.
컴퓨터가 이해할 수 있도록 "정확하고 상세하게 요구사항을 설명해준다"
컴퓨터에게 명령하려면 기계어로 말해줘야한다.
하지만 기계어는 인간이 사용하기에 너무 복잡하다
이런 기계어를 대신하기 위한 언어 => "프로그래밍 언어"
프로그래밍 언어를 기계어로 번역해주는 역할 = 컴파일러 or 인터프리터 (일종의 번역기)
const number = 'string';
console.log(number*number); //NaN
위의 코드는 문법적으로 문제 없지만, 의미적으로 옳지 않다.
(변수 number에 문자열이 할당 되었기 때문에)
프로그래밍은 요구사항에 맞게 적절한 자료구조와 함수를 때에 맞게 제어하는 것
넷스케이프에서 만들었다. -> 이름 여러번 바꿈 -> 크로스 브라우징 이슈 발생 -> 표준화 작업 실시 -> ECMAScript로 명명
초창기에는 웹페이지의 보조적인 기능을 수행하기 위해 사용 -> 현재는 어디서든 사용 가능
https://youtu.be/wcsVjmHrUQg 참고 영상 (설명이 쉽고 친절)
Ajax (Asynchronous JavaScript and XML)
jQuery
V8 자바스크립트 엔진
Node.js
장점 : 자바스크립트 1개의 언어로 프론트,백 둘다 사용 가능
특징 : 단일스레드 이벤트 루프 -> 요청처리 성능 좋음 but cpu 사용률 높을 때는 권장하지 않음
(I/O가 빈번한 SPA에 적합)
SPA 프레임워크
- 점차 개발 규모가 커지고 복잡도가 상승했다.
- Angular, React, Vue.js 등의 출현으로 아키텍처 구축을 편리하게 만들어줌
## 자바스크립트의 특징
- 웹 브라우저에서 동작하는 유일한 프로그래밍 언어
- 인터프리터 언어
- 타입이 강하지 않음 -> 쉽게 배운다는 장점과 규모가 커지면 오류 잡기가 어렵다는 단점