본문 바로가기
프로그래밍/Javascript

[Javascript] 자바스크립트 기초 입문 : 웹 개발자로 가는 첫걸음

by iwbap 2024. 12. 7.
728x90

들어가며

자바스크립트(JavaScript)는 오늘날 웹 개발을 논할 때 절대 빠질 수 없는 핵심 언어입니다. 웹 브라우저에서 동적인 인터랙션을 제공하는 기본 도구로 시작했지만, 이제는 백엔드(서버), 모바일 앱, 데스크톱 애플리케이션, 심지어 사물인터넷(IoT) 분야까지 진출한 만능 언어로 성장했습니다.

이 글에서는 자바스크립트를 처음 접하는 분들을 위해 언어의 기본기를 다질 수 있는 로드맵을 제공합니다. 먼저 자바스크립트란 무엇인지, 어떻게 개발 환경을 구축하는지 알아보며, 이어서 변수, 자료형, 연산자, 조건문, 반복문, 함수, 스코프, 그리고 배열과 객체 같은 핵심 개념을 자세히 살펴봅니다. 이 기초 개념들을 탄탄히 익히면, 이후 자바스크립트 심화 주제나 프레임워크 학습에서도 흔들리지 않는 튼튼한 기반을 마련할 수 있습니다.

1. 자바스크립트란 무엇인가?

1-1. 탄생 배경과 발전 과정

자바스크립트는 1995년 넷스케이프(Netscape) 브라우저를 위해 탄생한 언어로, 웹 페이지에 동적인 기능을 부여하고 사용자와 상호작용하는 데 특화되어 있습니다. 초기에는 “브라우저 전용 스크립트 언어” 정도로 취급되었지만, 2009년 Node.js의 등장과 함께 서버 사이드 프로그래밍 영역까지 확장되며 제2의 전성기를 맞이했습니다. 이제 자바스크립트는 단순히 애니메이션이나 양식 검증만을 위한 언어가 아니라, 웹 프론트엔드·백엔드, 모바일 앱(React Native), 데스크톱 앱(Electron), 게임 개발, 머신러닝 등 광범위한 분야에서 사용되는 범용 프로그래밍 언어입니다.

1-2. 자바스크립트의 특징

  • 동적 타이핑(Dynamic Typing) : 변수에 지정되는 자료형이 고정되지 않고 상황에 따라 달라질 수 있습니다. 이는 빠른 개발을 가능케 하지만, 자료형 불일치로 인한 오류가 발생할 수 있으므로 주의가 필요합니다.
  • 인터프리터 언어 : 별도의 컴파일 과정 없이 브라우저나 Node.js 엔진이 코드를 즉시 해석하고 실행합니다.
  • 이벤트 기반, 비동기 처리 능력 : 사용자 이벤트(클릭, 키입력)나 서버 응답 등에 반응하는 코드를 쉽게 작성할 수 있습니다.
  • 거대한 생태계 : npm(Node Package Manager)을 통한 수많은 라이브러리와 프레임워크 지원, 풍부한 커뮤니티 자료는 개발 생산성을 극대화합니다.

1-3. 개발 환경 구축

  • 브라우저 : 크롬(Chrome), 파이어폭스(Firefox) 등 최신 브라우저를 사용하면 별다른 설치 없이 자바스크립트 코드를 실행할 수 있습니다. 콘솔(개발자 도구)에서 바로 코드를 테스트해볼 수도 있습니다.
  • 에디터/IDE : VS Code, WebStorm, Sublime Text 등 코드 편집기를 설치합니다. VS Code는 풍부한 플러그인 생태계와 직관적인 UI로 많은 개발자에게 사랑받고 있습니다.
  • Node.js 설치(선택사항) : 백엔드나 빌드 도구를 활용하기 위해 Node.js를 설치할 수 있습니다. Node.js는 자바스크립트 실행 환경으로, 터미널에서 node 명령어로 JS 파일을 실행할 수 있게 합니다.

예제 : hello.html 파일을 만들어 다음 코드로 브라우저에서 실행해보세요.

[html]

<!DOCTYPE html>
<html lang="ko">
<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0"/>
  <title>Hello JS</title>
</head>
<body>
  <h1 id="greeting">Loading...</h1>
  <script>
    document.getElementById('greeting').textContent = 'Hello, JavaScript!';
  </script>
</body>
</html>

 

브라우저에서 파일을 열면, “Hello, JavaScript!”가 화면에 표시됩니다. 이렇게 간단한 예제로 DOM을 조작하며, 자바스크립트가 HTML과 상호작용하는 흐름을 맛볼 수 있습니다.

 

2. 변수, 자료형, 연산자 : 코드의 기본 빌딩 블록

2-1. 변수 선언

변수는 데이터를 저장하는 상자입니다. ES6 이후에는 let과 const를 주로 사용합니다.

  • let : 재할당 가능한 변수 선언
  • const : 재할당 불가능한 상수 선언
  • var : 기존 방식이지만 스코프 문제로 잘 사용하지 않습니다.

예제

[js]

let name = 'Alice';
const PI = 3.14159;
console.log(name); // Alice
// PI = 3.14; // 오류! const는 재할당 불가

 

2-2. 자료형

자바스크립트의 자료형은 크게 원시 타입(primitive type)과 참조 타입(reference type)으로 나눕니다.

  • 원시 타입 : number, string, boolean, null, undefined, symbol, bigint
  • 참조 타입 : object(배열, 함수, 일반 객체 등)

예제

[js]

let age = 30; // number
let greeting = "Hello"; // string
let isStudent = false; // boolean
let nothing = null; // 명시적 비어있음
let notDefined; // undefined: 초기화 안 됨

 

2-3. 연산자

  • 산술 연산자 : +, -, *, /, %
  • 비교 연산자 : ===, !==, >, <
  • 논리 연산자 : &&, ||, !

예제

[js]

console.log(5 + 3); // 8
console.log(10 > 3); // true
console.log(true && false); // false

 

형 변환에 유의하세요. '5' + 3은 "53"(문자열)이지만, Number('5') + 3은 8입니다.

 

3. 조건문과 반복문 : 프로그램의 흐름 제어

3-1. 조건문 if / else

조건문을 사용하면 상황에 따라 다른 코드를 실행할 수 있습니다.

 

[js]

let score = 85;
if (score >= 90) {
  console.log('A학점');
} else if (score >= 80) {
  console.log('B학점');
} else {
  console.log('C학점 이하');
}

 

3-2. switch 문

여러 경우를 간결히 처리할 때 유용합니다.

 

[js]

let fruit = 'apple';
switch (fruit) {
  case 'apple':
    console.log('사과입니다.');
    break;
  case 'banana':
    console.log('바나나입니다.');
    break;
  default:
    console.log('해당하는 과일이 없습니다.');
}

 

3-3. 반복문 for / while

반복문은 코드 블록을 여러 번 실행합니다.

  • for 문 : 반복 횟수가 명확할 때
  • while 문 : 조건이 참인 동안 계속 반복

[js]

for (let i = 0; i < 3; i++) {
  console.log(`i의 값: ${i}`);
}

let count = 0;
while (count < 3) {
  console.log(`count: ${count}`);
  count++;
}

 

4. 함수와 스코프 : 재사용 가능한 코드 블록 만들기

4-1. 함수 선언 및 호출

함수는 특정 작업을 수행하는 코드 묶음입니다.

 

[js]

function greet(userName) {
  return `Hello, ${userName}!`;
}
console.log(greet('Bob')); // Hello, Bob!

 

4-2. 함수 표현식과 화살표 함수

ES6부터 화살표 함수로 더 간결하게 함수 정의가 가능합니다.

 

[js]

const add = (a, b) => a + b;
console.log(add(2, 3)); // 5

 

4-3. 스코프(Scope) 이해

스코프는 변수가 유효한 범위를 의미합니다.

  • let, const는 블록 스코프를 가짐
  • var는 함수 스코프를 가짐 (권장 X)

[js]

if (true) {
  let x = 10;
}
// console.log(x); // 에러! x는 if 블록 바깥에서 유효하지 않음

 

이러한 스코프 개념을 잘 활용하면 변수가 엉키지 않고 체계적인 코드 관리가 가능합니다.

 

5. 배열과 객체 : 데이터를 구조화하는 핵심 도구

5-1. 배열(Array)

배열은 순서가 있는 리스트입니다.

 

[js]

const fruits = ['apple', 'banana', 'cherry'];
console.log(fruits[1]); // banana

// 배열 메서드 활용
fruits.push('orange');
console.log(fruits); // ['apple', 'banana', 'cherry', 'orange']

 

배열 메서드 map, filter, reduce를 통해 데이터 처리 로직을 간결하게 만들 수 있습니다.

5-2. 객체(Object)

객체는 키-값 쌍을 통해 다양한 형태의 데이터를 표현합니다.

 

[js]

const person = {
  name: 'Charlie',
  age: 28,
  greet() {
    console.log(`Hi, I'm ${this.name}.`);
  }
};
person.greet(); // Hi, I'm Charlie.

 

점 표기법(person.name) 또는 대괄호 표기법(person['age'])으로 속성에 접근 가능합니다. 객체를 사용하면 실세계 사물을 모델링하고, 구조화된 데이터를 다룰 수 있습니다.

 

마무리 : 기초를 탄탄히 다지는 것이 핵심

여기까지 자바스크립트 기초를 체계적으로 살펴보았습니다. 이 단계에서 여러분은 다음을 할 수 있어야 합니다.

  • 자바스크립트의 기본 개념과 역사, 개발 환경에 대한 이해
  • 변수, 자료형, 연산자, 조건문, 반복문, 함수, 스코프, 배열, 객체와 같은 핵심 문법 요소 활용
  • 간단한 예제 코드를 직접 작성하고 실행해보기

기초를 튼튼히 다지는 것은 앞으로 다룰 다양한 심화 주제(비동기 프로그래밍, 모듈 시스템, 클래스 문법, 프레임워크 활용)로 나아가는 데 든든한 밑거름이 됩니다.

728x90