1. 도입: JS는 이제 더 이상 '장난감'이 아니다
8년 전, 제가 처음 개발을 시작했을 때만 해도 자바스크립트는 브라우저에 간단한 효과를 주는 용도로 치부되곤 했습니다. 하지만 지금의 JS 생태계는 자바만큼이나 거대하고 견고해졌습니다. 특히 **ES6(2015)**와 TypeScript의 등장은 백엔드 개발자인 저에게도 매우 흥미로운 변화였습니다.
2. 암흑기: 'var'라는 이름의 혼돈 (ES5 이전)
자바의 private String name;처럼 엄격한 선언에 익숙한 개발자에게 JS의 var는 공포 그 자체였습니다.
- 함수 스코프: if 블록 안에서 선언한 변수가 밖에서도 살아있습니다.
- 중복 선언 허용: 똑같은 이름으로 변수를 또 선언해도 에러가 나지 않고 덮어씌워집니다.
- 호이스팅: 선언하기도 전에 변수를 사용할 수 있는 기이한 현상이 발생합니다.
3. 현대화의 시작: let, const 그리고 Class (ES6+)
2015년, JS는 현대적인 언어의 꼴을 갖추기 시작합니다. 자바 개발자가 가장 반겼던 변화들입니다.
- const와 let: 드디어 블록 스코프가 도입되었습니다. 특히 const는 자바의 final처럼 불변성을 보장해주어 코드의 예측 가능성을 높였습니다.
- Class 키워드: 프로토타입 체인이라는 난해한 개념 뒤에 숨어있던 객체지향 문법이 class라는 직관적인 키워드로 정리되었습니다.
- 화살표 함수: 자바 8의 람다처럼 코드를 간결하게 만들어 주었습니다.
4. 정점: TypeScript, 자바의 안전함을 이식하다
하지만 여전히 '동적 타입'이라는 불안함이 남아있었죠. 이를 해결한 것이 바로 TypeScript입니다.
- 컴파일 타임 에러: 런타임에 undefined is not a function 에러를 보며 고통받던 시절은 끝났습니다. 이제 자바처럼 빌드 시점에 타입을 체크합니다.
- 인터페이스와 제네릭: 자바 개발자에게 익숙한 Interface, Generic, Abstract Class 등을 그대로 사용할 수 있어 구조적인 설계가 가능해졌습니다.
5. 결론: 결국 언어는 수렴한다
최근 자바가 var 키워드(Java 10)를 도입하고 람다를 강화하듯, 자바스크립트는 타입을 받아들이며 견고해지고 있습니다. 이제 백엔드와 프론트엔드의 경계는 문법이 아니라 **'어떤 문제를 해결하느냐'**의 차이만 남은 것 같습니다.
LIST
'Python & node (AI Service)' 카테고리의 다른 글
| HTTP의 ETag에 대해서 설명해주세요. (0) | 2026.03.17 |
|---|---|
| React 버전 히스토리 정리: React 15부터 React 19까지 주요 변화와 개발 패러다임 (0) | 2026.03.16 |
| 자바스크립트에서 생성자 함수가 무엇인지, class 문법은 왜 도입되었는지 설명해주세요. (0) | 2026.03.12 |
| VSCode, AI 시대 개발자의 표준 IDE인가? 장점·단점·실전 사용법 정리 (0) | 2026.03.11 |
| 구글 안티그래비티와 커서(ai agent) 를 비교 (0) | 2026.03.11 |
