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 |