
한 번에 오직 하나의 작업만 실행할 수 있다는 의미, 즉 한줄씩 차례대로 코드가 실행
동시에 여러 작업을 처리하지 않고, 순차적으로 처리하는 방식
자바스크립트는 웹페이지 상에서 유저 인터페이스(UI)를 조작하기 위해 만들어졌다. 만약 동시에 여러 스레드가 DOM을 조작한다면 충돌이 날 수 있기때문에, 안정성과 예측 가능성을 위해 싱글 스레드로 설계했다.
자바스크립트는 객체를 중심으로 코드를 구조화할 수 있는 객체 지향 프로그래밍(Object-Oriented Programming)을 지원한다. 클래스(class), 생성자 함수(constructor), 상속(inheritance) 등의 개념을 활용하여, 코드의 재사용성과 유지보수성을 높일 수 있다. ES6 이후에는 class 문법이 도입되어 객체지향 방식이 한층 더 명확해졌다.
자바스크립트는 동적 타이핑(dynamic typing) 언어로, 변수 선언 시 자료형을 명시할 필요가 없다. 실행 도중 변수의 타입이 바뀔 수 있으며, 개발자가 타입 변환을 수시로 할 수 있는 유연함을 제공한다. 다만, 이로 인해 발생할 수 있는 타입 오류를 방지하기 위해 타입스크립트(TypeScript) 같은 정적 타입 언어가 함께 사용되기도 한다.
자바스크립트는 함수형 프로그래밍(functional programming) 패러다임도 지원한다. 함수를 일급 객체로 취급하며, 함수 자체를 변수에 담거나 인자로 전달하고, 반환값으로 사용할 수 있다. 고차 함수, 순수 함수, 클로저, map/filter/reduce 등의 함수형 요소들을 적극적으로 활용할 수 있다.
자바스크립트는 웹 환경에서 자주 발생하는 네트워크 요청이나 타이머 등의 작업을 효율적으로 처리하기 위해 비동기 처리(asynchronous processing)를 지원한다. 콜백(callback), 프로미스(Promise), async/await 등을 통해 논블로킹 방식으로 동작하며, 사용자 경험을 저해하지 않고 작업을 처리할 수 있다.