JS Basic | 기초부터 탄탄하게 (1)

trueDOM·2025년 7월 13일
0

Frontend

목록 보기
3/4

작성일 : 2025.07.13
작성자 : 이참

동기 : JavaScript를 복습하며, 조급한 마음에 깊게 공부해야 하는 부분을 그냥 넘어가려는 스스로의 모습을 인지하게 되었다. 빠르게 실력을 회복하는 것도 중요하지만, 개발자에게 있어 중요한 것은 해당 기능이 어떻게 동작하며 왜 동작하는 지 아는 것이라고 생각한다. 향후 React, Next.js를 공부할 때에도 지금의 공부가 큰 도움이 될 것이라 생각하므로 조급함은 잠시 내려놓고 JavaScript를 구석구석 파헤쳐보고자 한다.
인터넷의 글을 단순히 읽어본 후 이해했다고 넘기지 말고, 하나 하나 머릿속에 잘 집어넣으며 공부하길 바라는 마음으로 이 시리즈를 시작한다.


이번 시간에는 JavaScript가 어떤 언어인지부터 알아보고자 한다. 이 시리즈에서 다루는 내용 전반은 MDN Docs와 학부 3학년 때 수강한 오학주 교수님의 프로그래밍 언어(COSE212)를 참고하였으니 혹시나 궁금한 사항이 생긴다면 공식 문서와 교재를 직접 찾아서 공부해보는 것을 추천한다.

JavaScript란 어떤 언어인가?

JavaScript는 JIT(just-in-time) 컴파일을 하는 인터프리터(interpreter)형 언어이며 타입 체킹을 프로그램 실행 중에 하는 동적 타입 시스템(Dynamic type system)을 갖춘 언어이다. 또한, 기본적으로는 상태와 제어 흐름이 존재해야하는 명령형 언어(imperative)이면서도, 함수가 일급 객체로 취급되는 함수형 언어(functional)이다. 따라서 스타일에 따라 명령형 혹은 함수형처럼 사용할 수 있는 멀티 패러다임을 지원하는 언어이며, 객체지향프로그래밍(OOP) 패러다임도 쓸 수 있다.

아래의 인용은 함수형 언어에 대한 설명인데, 이는 함수가 특별한 존재가 아니라 문자, 숫자, 객체 처럼 함수를 정의하고 사용하는 방식이 매우 자유롭다는 것을 의미한다.

프로그래밍 언어에서 어떤 값이 일급이 되려면 그 값을 변수에 저장할 수 있고, 함수의 인자로 넘길 수 있고, 함수의 결과값으로 반환할 수 있어야 한다.
-프로그래밍 언어의 원리(2022), 오학주 교수님, p.42-

참고로 JavaScript는 1995년 넷스케이프에서 근무하던 브랜든 아이크가 10일 만에 설계한 언어이다. 처음에는 굉장히 부실한 언어였으나, ECMAScript 표준화와 함께 꽤나(?) 업그레이드 되었다고 한다.

  • ECMA Script : 웹 브라우저의 표준 언어인 JavaScript를 각 브라우저마다 다르게 구현하여 생기는 문제를 줄이기 위해 만들어진 JS표준화를 위해 만들어진 이론적인 명세서로, 모든 브라우저가 공통적으로 따라야 할 규칙을 정했다.

아래는 JavaScript를 공부해본 사람이라면 한 번 쯤 본 적이 있을 법한 사진이다. JavaScript는 자유도가 굉장히 높은 만큼, 종종 이해할 수 없는 결과를 내놓기도 한다. 이 문제는 추후 TypeScript를 통해 다소 개선이 된다. (TypeScript에 대해서는 React를 배운 후에 알아보도록 하자.)

오학주 교수님의 <프로그래밍 언어의 이해> 교재를 공부하고나면 각종 언어들을 더욱 흥미롭게 볼 수 있으니(특히 JS), 한 번쯤은 읽어보는 것을 추천한다.

이번 시간에는 워밍업 느낌으로 JavaScript의 특징과 역사에 대해 짧게 알아보았다. 다음 시간에는 변수 선언과 scope, hoisting, data type에 대해 알아보도록 하자.


최근 JavaScript를 복습하다 보니, 이전에 공부했던 개념들이 머릿속에 희미하게 남아있음을 느꼈다. 기본적인 문법 먼저 공부하고, 차근차근 공부하려 했는데 자꾸만 중요했던 사실이 떠올라 가벼운 내용임에도 공부가 지쳤다.

  • 프로그래밍 언어 강의에서 배운 인터프리터
  • arrow function과 일반 function의 매커니즘 차이
  • arrow function의 return 실수 주의
  • 함수형 언어 (PL)
  • map 함수와 filter 함수 (PL)
  • 콜백함수
  • 배열의 깊은 복사
  • OOP
  • 함수로 기능을 쪼개는 기준에 대하여
  • JavaScript의 여러 유용한 method들과 반환값들
  • 값 복사와 전달의 개념 등

대강 메모해놓은 것을 모아놓으면 이런 내용인데, 이보다 더 중요한 내용들도 있었다는 기억이 있어 생각날 때 마다 메모해두고 차근차근 다루고 기록해보려 한다. 이렇게 모아두면 많지만, 하나씩 쪼개어 공부하다보면 금방 해낼 수 있겠지.

빠르게 가는 것도 중요하지만, 탄탄하고 확실하게 가는 것이 자신감 있는 개발자를 만든다 생각한다. 기억이 나지 않아도, 몰라도 괜찮으니 스스로에게 솔직해지자.

나 스스로를 응원해 !

profile
세상에 대해 무한한 호기심을 가지고 탐구 및 공부하는 삶을 추구합니다 :D

0개의 댓글