• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [JavaScript] 자바스크립트의 주요 특징과 이해
    2024년 12월 21일
    • 유니얼
    • 작성자
    • 2024.12.21.:54
    728x90

    JavaScript는 웹 개발에서 가장 널리 사용되는 언어 중 하나로, 강력하고 유연한 기능을 제공합니다. 이 글에서는 JavaScript의 특징과 작동 원리에 대해 알아보겠습니다.

    1. 하이 레벨 언어

    JavaScript는 하이 레벨 언어로, 메모리를 직접 관리하지 않아도 됩니다.

    • 메모리 자동 관리: 가비지 콜렉션(Garbage Collection)을 통해 더 이상 사용되지 않는 메모리를 자동으로 해제합니다. 개발자는 메모리 관리를 신경 쓰지 않아도 되므로 코드 작성에만 집중할 수 있습니다.
    • 성능 제약: 메모리를 자동 관리하는 특성 때문에 C/C++ 같은 로우 레벨 언어보다 성능이 다소 낮을 수 있습니다. 하지만 JavaScript는 최신 엔진과 최적화 기술로 이 격차를 줄이고 있습니다.

    2. 인터프리터 언어

    JavaScript는 인터프리터 언어로, 코드를 실행하기 위해 별도의 컴파일 단계가 필요하지 않습니다.

    • 브라우저는 코드를 바로 읽고 실행하며, 결과를 즉시 확인할 수 있어 빠른 피드백이 가능합니다.
    • 최신 JavaScript 엔진(V8, SpiderMonkey 등)은 JIT(Just-In-Time) 컴파일러를 사용하여 실행 속도를 대폭 향상시킵니다.

    3. 가비지 콜렉션

    JavaScript는 가비지 콜렉터를 사용해 사용되지 않는 메모리를 자동으로 해제합니다.

    • 장점: 메모리 관리를 자동으로 처리하여 개발자가 효율적으로 작업할 수 있습니다.
    • 주의점: 과도한 객체 생성이나 잘못된 참조로 인해 메모리 누수가 발생할 수 있으니, 메모리 사용량을 점검하는 것이 중요합니다.

    4. 멀티 패러다임 언어

    JavaScript는 절차지향, 객체지향, 함수형 프로그래밍을 모두 지원하는 다재다능한 언어입니다.

    • 절차지향: 코드를 순차적으로 실행하는 방식으로 간단한 작업에 적합합니다.
    • 객체지향: 클래스와 객체를 사용해 코드 재사용성과 유지보수성을 높입니다.
    • 함수형 프로그래밍: 고차 함수와 불변성을 활용하여 선언적 스타일로 코드를 작성합니다.

    5. 프로토타입 기반

    JavaScript는 클래스 기반이 아닌 프로토타입 기반 언어입니다.

    • 모든 객체는 다른 객체를 프로토타입으로 상속받습니다.
    • 예를 들어, 배열 객체는 Array.prototype을 통해 배열 메서드를 상속받아 사용합니다.
    • 간단한 구조로 상속을 구현할 수 있지만, 상속 계층이 깊어지면 디버깅이 어려울 수 있습니다.

    6. 일급 함수

    JavaScript에서 함수는 일급 객체로 취급됩니다.

    • 함수는 변수처럼 저장하거나 다른 함수에 전달, 반환할 수 있습니다.
    • 이를 활용해 고차 함수를 만들거나, 콜백 함수를 사용하는 등 다양한 프로그래밍 패턴을 구현할 수 있습니다.
    function add(a, b) {
      return a + b;
    }
    
    const operation = add;
    console.log(operation(5, 10)); // 15

    7. 동적 타이핑 언어

    JavaScript는 동적 타입 언어로, 변수의 타입을 미리 지정하지 않아도 됩니다.

    • 변수에 어떤 값이든 할당 가능하며, 타입은 런타임에 결정됩니다.
    • 이 유연성은 간편한 코드를 작성할 수 있게 하지만, 타입 오류가 런타임에서 발견될 수 있다는 단점이 있습니다.
    let data = 42;
    data = "JavaScript"; // 정상 작동
    console.log(typeof data); // "string"

    8. 싱글 쓰레드

    JavaScript는 싱글 쓰레드로 동작합니다.

    • 한 번에 하나의 작업만 처리하지만, 이벤트 루프를 통해 비동기 작업을 효율적으로 관리합니다.
    • 동시성 처리를 지원하기 때문에 대규모 데이터 처리나 네트워크 요청에서도 적합합니다.

    9. 논 블로킹 I/O

    JavaScript는 논 블로킹 I/O를 통해 오래 걸리는 작업(예: 네트워크 요청, 파일 처리)을 비동기로 실행합니다.

    • Promise와 async/await 같은 문법을 사용하면 가독성 높은 비동기 코드를 작성할 수 있습니다.
    • 주요 실행 흐름이 차단되지 않으므로 사용자 경험이 향상됩니다.
    async function fetchData() {
      const response = await fetch("https://api.example.com/data");
      const data = await response.json();
      console.log(data);
    }
    fetchData();

    결론

    JavaScript는 이러한 특징 덕분에 웹 개발뿐만 아니라 다양한 환경에서 활용되고 있습니다. 하이 레벨의 편의성과 강력한 기능을 제공하면서도 동적이고 유연한 특성을 갖춘 JavaScript는 웹 기술의 핵심으로 자리 잡고 있습니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바