티스토리 뷰
JavaScript는 다양한 환경에서 사용할수가 있습니다.
웹브라우저에서는 DOM(document object model)을 통해 웹 페이지의 요소에 접근하고 조작할 수 있습니다.
이를 통해 사용자의 상호작용에 따라 화면에서 보여지는 부분을 동적으로 처리하고 웹 클라이언트 애플리케이션을 개발할수가 있습니다. 또한 서버 측에서는 Node.js를 사용하여 JavaScript를 실핼할 수 있습니다.
Node.js는 비동기적이고 이벤트 기반의 서버 측 애플리케이션을 개발할 수 있도록 지원합니다.
이를 통해 JavaScript로 데이터를 처리하고 서버 애플리케이션을 개발할 수 있습니다.
따라서 클라이언트와 서버간에 동일한 언어를 사용하여 애플리케이션을 개발할수 있어서 개발 생산성을 높일수가 있습니다.
동적타이핑과 함수형 프로그래밍을 지원합니다.
변수를 선언할 때 타입을 명시적으로 지정할 필요가 없습니다.
런타임 시에 변수에 할당된 값에 따라 데이터 타입이 자동으로 결정되기 때문에 코드를 더 유연하게 작성 할 수가 있습니다.
또한 함수를 일급객체로 취급합니다.
함수를 변수에 할당하거나, 함수의 인자값으로 전달하거나 함수를 반환하는 등의 작업이 가능하여 고차함수, 클로저 등의 개념을 구현할 수가 있으며 이는 함수형 프로그래밍의 핵심 개념을 적용할수가 있게 됩니다.
이를 통해, 코드의 재사용성을 높일수가 있습니다.
JavaScript는 싱글스레드 기반의 언어이지만,
이벤트 루프와 콜백 큐를 이용하여 여러 이벤트를 동시에 다룰 수 있습니다.
이를 통해 웹 애플리케이션에서는 사용자의 상호작용에 반응하고, 서버 측에서는 동시성을 다루는 등 다양한 작업을 처리할 수있습니다.
JavaScript는 단일 호출 스택(Call Stack)을 가지고 있으며 이벤트 루프(Event loop)를 통해 비동기 작업을 관리합니다.
이벤트 루프는 호출 스택이 비어있는지 반복적으로 확인하고, 호출 스택이 비어있으면 콜백 큐(callback queue)에서 이벤트를 꺼내와 호출스택으로 이동시킵니다.
이렇게 이벤트 루프를 통해 비동기적인 작업이 처리되고, 이를 통해 싱글 스레드에서도 다양한 작업을 비동기 적으로 처리할 수 있게 됩니다.
함수형프로그래밍이 가능하면서 객체지향 프로그래밍이 가능합니다.
이는 JavaScript는 클래스 기반의 객체지향 언어가 아니라 프로토타입 기반의 객체 지향 언어이기 때문입니다.
프로토타입은 다른 객체를 참조하고 이를 통해 상속을 구현할 수 있는데 이를 프로토타입 체인이라고 합니다.
JavaScript는 클래스 대신 이런 프로토타입을 사용하여 객체를 생성합니다.
객체를 생성할 때 다른 객체의 프로토타입을 상속받아 새로운 객체를 만들 수 있으며, 이를 통해 객체 지향 프로그래밍의 핵심 개념인 상속을 구현할 수 있습니다.
'프로그래밍 기초 > JavaScript' 카테고리의 다른 글
정규 표현식 파고들기 1 (0) | 2024.05.27 |
---|---|
비동기처리란? (0) | 2024.02.16 |
클로저란? (0) | 2024.01.11 |
Promise / 비동기 작업의 동기적 표현 (0) | 2024.01.10 |
TIL 9일차 + 콜백 함수란? (2) | 2024.01.04 |