250226 TIL #619 about JavaScript

김춘복·2025년 2월 26일
0

TIL : Today I Learned

목록 보기
622/627

Today I Learned

JS를 본격적으로 익혀두기 전에 JS를 대충 써보기만했지 어떤 특징인지, 어떤 장단점이 있는지 제대로 몰랐던거 같아서 이참에 정리를 한번 하고 가려한다.


JavaScript

JavaScript는 웹 페이지에 상호작용성과 동적 기능을 추가하는 데 필수적안 언어다.
HTML과 CSS와 함께 웹 개발의 세 가지 핵심 기술 중 하나로 웹사이트가 동적으로 렌더링되고 사용자 행동과 상호작용할 수 있게 한다.

JavaScript?

  • 1995년 Netscape에 의해 처음 소개된 경량의 인터프리터 프로그래밍 언어
  • 주로 웹 페이지에 상호작용성을 추가하기 위해 설계
  • 현재는 클라이언트 측 웹 개발뿐만 아니라 서버 개발(Node.js), 모바일 앱 개발, 게임 개발 등 다양한 분야에서 사용되고 있음

특징

  • 동적 타이핑(Dynamic Typing): 변수나 상수에 값이 할당될 때만 데이터 타입이 결정
  • 싱글 스레드 기반: JavaScript는 호출 스택이 하나밖에 없어 한 번에 하나의 함수만 처리할 수 있다.
  • 인터프리터 언어: 클라이언트의 웹 브라우저에 의해 해석되고 실행
  • 이벤트 중심(Event-driven): 사용자 상호작용이나 시스템 이벤트에 반응하는 프로그래밍 방식을 지원.
  • 프로토타입 기반: JavaScript는 클래스 기반이 아닌 프로토타입 기반의 객체지향 언어
  • 함수형 프로그래밍 지원: 함수를 변수에 할당하거나, 다른 함수의 인자로 전달하거나, 함수에서 함수를 반환하는 등의 유연한 작업이 가능

장점

개발 측면

  • 간단한 문법
  • 크로스 브라우저 호환성: Chrome, Firefox, Safari, Internet Explorer 등 모든 주요 브라우저와 호환
  • 풍부한 인터페이스: 애니메이션, 그래픽, 상호작용 요소 등을 생성할 수 있다.
  • 디버깅 용이성: 코드를 디버깅하고 오류를 빠르게 찾을 수 있는 도구를 제공

웹 개발 측면

  • 상호작용적 웹 페이지: 사용자 입력에 반응하는 상호작용적 웹 페이지를 만들 수 있음
  • 개발 속도: HTML 파일 내에서 작성할 수 있어 개발 속도가 빠름
  • 운영체제 제한 없음: 웹 브라우저에서 동작하는 스크립트 언어로 운영체제의 제한을 받지 않음
  • HTML/CSS와의 통합: HTML과 CSS와 함께 웹사이트를 디자인하는 세 가지 핵심 언어 중 하나
  • 비동기 프로그래밍: 콜백, 프로미스, async/await를 통한 비동기 프로그래밍을 지원하여 효율적인 I/O 작업이 가능
  • 풍부한 생태계: React, Angular, Vue.js 등의 프레임워크와 다양한 라이브러리를 통해 복잡한 웹 애플리케이션을 쉽게 구축할 수 있음

단점

기술적 제한

  • 보안 문제: JavaScript는 클라이언트 측 스크립팅 언어이므로 코드가 사용자의 컴퓨터에서 실행됩니다. 이는 적절히 구현되지 않으면 보안 문제로 이어질 수 있음
  • 브라우저 지원: 모든 브라우저가 최신 버전의 JavaScript를 지원하지는 않습니다. 그래서 크로스 브라우저 애플리케이션을 개발할 때 호환성 문제를 일으킬 수 있음
  • 성능 문제: JavaScript는 인터프리터 언어이기 때문에 컴파일 언어보다 느릴 수 있음.
  • 오류 처리 부족: JavaScript는 좋은 오류 처리 메커니즘이 없어 디버깅이 어려울 수 있음
  • 라이브러리 부족: JavaScript는 Java나 Python과 같은 다른 언어에 비해 라이브러리가 제한적
  • 해석 방식 차이: 각 브라우저마다 JavaScript를 해석하는 방식이 다를 수 있어, 동일한 코드라도 결과가 달라질 수 있음

개발 측면

  • 소스 코드 노출: 브라우저에서 소스 코드가 노출되어 있음
  • 복사 용이성: 컴파일하지 않는 언어이므로 복사하여 그대로 사용할 수 있음
  • 한정된 객체와 함수: 제한된 객체와 객체 함수를 제공
  • 복잡성: JavaScript는 매우 강력한 언어이지만, 동시에 가장 복잡하고 배우기 어려운 언어 중 하나로 간주
profile
Backend Dev / Data Engineer

0개의 댓글

관련 채용 정보