JavaScript

break 없는 while loop·2025년 1월 2일
post-thumbnail

1. JavaScript란?

JavaScript는 웹 개발을 포함한 다양한 환경에서 사용되는 고수준, 동적, 인터프리터형 프로그래밍 언어이다. 주로 클라이언트 단에서 웹 페이지가 동작하는 것을 담당한다.

2. 주요 특징

1. 동적 타입 (Dynamic Typing)

  • 변수에 타입 선언 없이 데이터를 할당할 수 있으며, 런타임에 타입이 결정된다.
let value = 42; // number
value = "Hello"; // string
  • 장점: 유연성
  • 단점: 타입 관련 오류가 런타임에 발생할 가능성

2. 인터프리터 언어

  • JavaScript 코드는 컴파일 없이 바로 실행된다.
  • 대부분 브라우저 내의 JavaScript 엔진(예: Google V8)이 코드를 해석하고 실행한다.

3. 멀티 패러다임 언어

  • JavaScript는 다양한 프로그래밍 패러다임을 지원한다:
  • 객체 지향 프로그래밍(OOP):
class Animal {
 constructor(name) {
   this.name = name;
 }  
 speak() {
   console.log(`${this.name} makes a noise.`);
 }
}
  • 함수형 프로그래밍(FP):
const = numbers = [1, 2, 3];
const doubled = numbers.map(n => n * 2);
console.log(doubled); // [2, 4, 6]

4. 비동기 처리와 이벤트 루프

  • JavaScript는 싱글 스레드 기반이지만, 비동기 작업을 효율적으로 처리하기 위해 이벤트 루프와 콜백 큐를 사용한다.
    • Promiseasync/await으로 비동기 처리가 간결해짐
async function fetchData() {
 const response = await fetch('https://api.example.com/data');
 const data = await response.json();
 console.log(data);
}
fetchData();

5. 객체 기반 (Prototype-Based)

  • JavaScript는 클래스가 아닌 프로토 타입(Prototype)을 기반으로 객체를 생성
function Person(name) {
  this.name = name;
}
Person.prototype.greet = function () {
 console.log(`Hi I'm ${this.name}`);
};
const john = new Person('John');
john.greet(); // Hi, I'm John

6. 브라우저 내장 지원

  • JavaScript는 브라우저에서 기본적으로 실행되며, 브라우저의 DOM(Document Object Model)과 상호작용
document.querySelector('#myButton').addEventListener('click', () => {
  alert('Button Clicked!');
});

7. 플랫폼 독립성

  • JavaScript는 브라우저, 서버(Node.js), 데스크톱(예: Electron), 모바일 환경(React Native) 등 다양한 플랫폼에서 동작

8. 동적 스코프 (Lexical Scope)

  • JavaScript는 함수 내부에서 변수의 스코프를 블록 범위로 결정
function outer() {
  const x = 10;
  function inner() {
    console.log(x); // 10
  }
  inner();
}
outer();

9. 가비지 컬렉션 (Garbage Collection)

  • 메모리 관리가 자동화되어 사용하지 않는 객체를 자동으로 정리

10. 풍부한 라이브러리와 프레임워크로 확장 가능:

  • 프론트엔드: React, Vue, Angular
  • 백엔드: Node.js
  • 모바일: React Native
  • 데스크톱 앱: Electron
장점단점
대부분의 브라우저에서 기본적으로 실행 가능동적 타입으로 인해 런타임 오류 가능
클라이언트-서버 양쪽에서 사용 가능싱글 스레드 기반으로 병렬 처리 제약
방대한 생태계와 커뮤니티과거 버전 호환성 문제 (ES6 이전)
다양한 프레임워크 및 라이브러리 지원초기 학습 시 비동기 처리 개념이 어려울 수 있음
빠른 실행 속도와 이벤트 기반 비동기 처리 가능대형 프로젝트에서 유지보수 복잡성 증가
Node.js를 통한 백엔드 개발 가능메모리 관리 및 성능 최적화가 필요함
profile
프로그래밍 지식 아카이브용

0개의 댓글