Javascript와 C++

1. 기본 문법

1) 변수 선언 방식

var, let, const

변수를 선언할 때 사용되며 각각 스코프와 특성이 다르다.

예를 들어, var는 함수 스코프를 가지지만, let`과 const는 블록 스코프를 가진다. const는 재할당이 불가능하다는 특징이 있다.

// C++
const int num = 10;

// JavaScript
const num = 10;

 

2) 함수 선언 및 표현식

function 키워드를 사용하여 선언하거나, 화살표 함수(=>)를 이용할 수 있다.

화살표 함수는 간결한 문법과 this 바인딩이 없다는 특징이 있다.

// C++
auto add = [](int a, int b) { return a + b; };

// JavaScript
const add = (a, b) => a + b;

 

3) 동적 타이핑

JavaScript는 데이터 타입을 명시하지 않아도 되지만, 이러한 유연성으로 인해 런타임 에러가 발생할 가능성이 있다.

예를 들어, 같은 변수에 숫자와 문자열을 혼합하여 사용할 수 있다.

// JavaScript
let value = 42;
value = "string";  // 가능!

 

C++의 타입 시스템과의 차이점:

 - 모든 숫자는 64비트 부동소수점(double)으로 처리

 - null과 undefined의 구분

 - 객체는 참조 타입으로만 존재

 - 원시 타입(primitive types)도 객체처럼 메서드 사용 가능

 

 

2. 브라우저 환경

1) DOM(Document Object Model):

브라우저에서 HTML 문서를 객체 형태로 표현한 것이다. JavaScript를 사용하여 DOM을 조작하면 화면의 내용을 동적으로 변경할 수 있다. 데이터를 트리 형태로 관리한다.

 

2) 브라우저 메모리 모델과 C++ 비교:

C++에서는 명시적으로 메모리를 할당(new, delete)하지만, JavaScript는 가비지 컬렉터를 통해 자동으로 메모리를 관리한다.

 

3) 이벤트 루프:

setTimeout, Promise, async/await`과 같은 비동기 작업을 처리하는 메커니즘이다.

 

C++의 스레드와의 차이점:

 - 단일 스레드에서 비동기 처리

 - 이벤트 루프를 통한 비차단 동작

 - Promise와 async/await을 통한 비동기 제어



3. 웹 API와 데이터 통신

1) RESTful API:

HTTP 프로토콜을 기반으로 데이터를 주고받는 방식으로, 클라이언트-서버 간 통신에 사용된다.


2) HTTP 요청과 응답:

클라이언트가 요청(Request)을 보내고 서버가 응답(Response)을 반환하는 과정을 이해한다. 상태 코드(예: 200, 404)와 헤더의 역할도 중요하다.

 

3) 비동기 데이터 처리:

JavaScript에서는 `fetch`와 같은 함수로 비동기 요청을 보낼 수 있다. 이를 통해 데이터를 가져오고 화면에 표시할 수 있다.

 

ex) Fetch API

fetch('https://api.example.com/data')
    .then(response => response.json())
    .then(data => console.log(data));

'학습 > JavaScript' 카테고리의 다른 글

JavaScript 비동기 3 : async/await  (0) 2025.04.11
JavaScript 비동기 2 : 콜백, Promise  (0) 2025.04.09
JavaScript 비동기 1 : 이벤트 기반  (0) 2025.04.09
프로토타입과 Class  (0) 2025.04.08
var, let, const  (0) 2025.04.07