
JS는 HTML, CSS 와 함께 웹의 3대 핵심 요소 중 하나로 웹 브라우저 내에서 실행되는 유일한 프로그래밍 언어이다
클라이언트 측 스크립트로 시작했지만 현재 서버, 데스크톱, 모바일 앱, IoT 등 다양한 플랫폼에서 사용되는 범용 프로그래밍 언어로 발전했다
일급 함수 (First-class function)
다른 값들 (숫자, 문자열) 처럼 변수에 할당, 함수의 인자로 전달, 함수의 변환값으로 사용할 수 있는 객체// 1. 함수 자체를 변수에 할당 가능 const greet = function() { console.log("Hello") } // 2. 함수 인자로 전달 가능 function run(callback) { callback() // 함수 실행 } run(greet) // "Hello" // 3. 함수에서 함수를 반환 가능 function makeMultiplier(factor) { return function(num) { return num * factor } } const double = makeMultiplier(2) console.log(double(5)) // 10
JS는 전통적인 인터프리터 언어로 분류되며 개발자가 별도로 컴파일 과정을 거치지 않고 작성된 코드를 즉시 실행할 수 있다
하지만 최신 브라우저 엔진 (Chrome v8, Firefox SpiderMonkey, Safari JavaScriptCore) 은 하이브리드 방식 (JIT) 방식을 사용한다
인터프리터
코드를 한 줄씩 해석하여 실행 (즉시 실행, 유연성 높음)
JIT (Just In Time) 컴파일러
실행 도중 성능을 분석하여 최적화된 머신 코드로 변환 ( 빠름 )
이를 통해 JS 는 인터프리터 언어 특유의 유연성을 유지하면서 컴파일 언어 못지않은 고속 실행 성능을 확보하고 있다
JS는 다른 객체지향 언어와 달리 프로토타입 기반 객체지향 언어이다
이는 클래스 없이도 객체 간 상속이 가능하다는 뜻이다
class User {
#password
constructor () {
this.name = name
this.#password = password
}
}