ECMAScript(기본 뼈대) + Web API(브라우저 지원, DOM,BOM, Canvas, XMLHttpRequest...)
특징
기본문법은 c, java와 유사
프로토타입 기반 상속
일급 함수 개념 차용(일반 변수값처럼 사용할 수 있는 함수, 즉 return값으로도 함수를 줄 수 있고 parameter로도 함수 넘겨주기 가능)
인터프리터 언어
멀티 패러다임 프로그래밍 언어. 명령형 + 함수형 + 프로토타입 기반 객체지향 프로그래밍
프로그래밍 패러다임
명령형 프로그래밍 = 무엇을 어떻게 할 것인가. '어떻게'할 지를 중심으로 코드로 만들어주면 됨
함수형 프로그래밍 = '어떻게'를 안 보이게 한다. 작은 문제를 해결하기 위한 함수를 만들어 그 함수를 사용하는 방식.
ES6를 지원하지 않는 브라우저가 있기 때문에 ES6이상의 최신 문법을 적용할 경우 babel같은 트랜스파일러로 ES5이하의 사양으로 다운그레이드해줘야한다.(어차피 다 같은 코든데 최신 문법을 적용했냐 안했냐의 차이다)
주의! 브라우저와 Node.js는 용도가 다르다.
브라우저 : JS를 실행해 웹페이지를 브라우저에 렌더링하는 게 주목적
Node.js : 브라우저 외부에서 자바스크립트를 실행하는 게 주목적
각자 추가로 제공하는 API가 다르다.