자바스크립트 조건문과 반복문 기초 - JavaScript 시리즈 #3

자바스크립트 조건문과 반복문 기초

자바스크립트 100개 포스팅 시리즈의 세 번째 글에 온 걸 환영한다! 앞선 두 번째 글에서 변수와 데이터 타입을 배웠다면, 이번엔 프로그램의 흐름을 제어하는 조건문과 반복문을 배워볼 거다. 코딩에서 조건문은 어떤 조건에 따라 코드를 실행하거나 건너뛰게 하고, 반복문은 코드를 여러 번 실행하게 해준다. 이 두 가지는 프로그래밍의 핵심이라 꼭 익혀두면 좋다.

내가 처음 코딩 배울 때 조건문과 반복문이 제일 헷갈렸던 부분이었는데, 막상 이해하고 나니 코드를 짜는 게 훨씬 재밌어졌다. 이번 글에선 조건문(if, switch)과 반복문(for, while, do-while)의 기본적인 사용법과 실제 예제를 다뤄볼 거다. 천천히 따라오면서 직접 콘솔이나 간단한 HTML 파일에서 쳐보면 감이 올 거다.

조건문이란 무엇인가?

조건문은 프로그램이 특정 조건을 확인해서 그 결과에 따라 다른 코드를 실행하게 하는 거다. 자바스크립트에선 주로 if 문과 switch 문을 쓴다. 조건이 참인지 거짓인지 판단해서 코드를 선택적으로 실행하는 방식인데, 이게 있으면 프로그램이 단순히 위에서 아래로 흐르는 걸 넘어서 상황에 맞게 동작할 수 있다.

예를 들어, 내가 어떤 숫자가 10보다 큰지 확인하고 싶다면 조건문으로 그걸 판단해서 메시지를 띄울 수 있다. 이런 식으로 조건을 걸어서 프로그램의 흐름을 제어하는 게 조건문의 기본 역할이다.

if 문 사용법

if 문은 가장 기본적인 조건문이다. 조건이 참이면 특정 코드를 실행하고, 거짓이면 건너뛴다. 기본 구조는 간단하다:

if (조건) {
    // 조건이 참일 때 실행할 코드
}

조건은 보통 비교 연산자(>, <, ===, !== 등)를 써서 만든다. 예를 들어, 숫자가 10보다 큰지 확인해보자:

let num = 15;
if (num > 10) {
    console.log("숫자가 10보다 크네요!");
}

이 코드를 실행하면 콘솔에 "숫자가 10보다 크네요!"가 출력된다. num이 15니까 조건 num > 10이 참이 돼서 안쪽 코드가 실행된 거다.

조건이 거짓일 때도 뭔가를 하고 싶다면 else를 붙이면 된다:

let num = 5;
if (num > 10) {
    console.log("숫자가 10보다 크네요!");
} else {
    console.log("숫자가 10보다 작거나 같아요.");
}

여기선 num이 5라 조건이 거짓이니까 "숫자가 10보다 작거나 같아요."가 출력된다. 내가 처음 이걸 배울 때 else 없이 쓰다가 조건이 안 맞으면 아무 반응 없어서 당황했는데, else를 쓰니까 훨씬 명확해졌다.

조건이 여러 개라면 else if를 추가할 수 있다:

let num = 7;
if (num > 10) {
    console.log("숫자가 10보다 크네요!");
} else if (num > 5) {
    console.log("숫자가 5보다 크고 10 이하예요.");
} else {
    console.log("숫자가 5 이하예요.");
}

이 경우 num이 7이라 첫 번째 조건(num > 10)은 거짓, 두 번째 조건(num > 5)은 참이니까 "숫자가 5보다 크고 10 이하예요."가 출력된다. else if는 조건을 더 세밀하게 나눌 때 유용하다.

내가 처음 이걸 쓸 때 조건 순서가 중요하다는 걸 몰랐다가 잘못된 결과 나온 적이 있다. 예를 들어, 위 코드에서 num > 5를 먼저 쓰고 num > 10을 나중에 쓰면 11 같은 숫자가 첫 번째 조건에서 걸려서 잘못된 메시지가 나올 수 있다. 조건은 큰 범위에서 작은 범위로 가는 게 안전하다.

switch 문 사용법

switch 문은 if와 비슷하지만, 하나의 값을 여러 경우와 비교할 때 더 깔끔하다. 조건이 아니라 값을 기준으로 분기한다. 기본 구조는 이렇다:

switch (값) {
    case 값1:
        // 값1일 때 실행할 코드
        break;
    case 값2:
        // 값2일 때 실행할 코드
        break;
    default:
        // 아무 값에도 안 맞을 때 실행할 코드
}

예를 들어, 요일을 숫자로 받아서 이름을 출력해보자:

let day = 3;
switch (day) {
    case 1:
        console.log("월요일");
        break;
    case 2:
        console.log("화요일");
        break;
    case 3:
        console.log("수요일");
        break;
    default:
        console.log("알 수 없는 요일");
}

day가 3이라 "수요일"이 출력된다. 여기서 break가 중요한데, 이걸 빼면 조건에 맞은 후에도 다음 case까지 계속 실행된다. 내가 처음 switch 쓸 때 break 안 넣어서 결과가 뒤죽박죽 나왔던 기억이 있다.

default는 모든 case에 안 맞을 때 실행된다. 위 예에서 day가 0이나 8 같은 값이면 "알 수 없는 요일"이 출력된다. ifelse 같은 역할이다.

switch는 값이 명확히 나뉠 때 유용하다. 내가 어떤 프로젝트에서 메뉴 선택 처리할 때 if로 길게 쓰다가 switch로 바꾸니까 코드가 훨씬 간결해졌다.

반복문이란 무엇인가?

반복문은 코드를 여러 번 실행하게 해준다. 같은 작업을 반복할 때마다 매번 쓰지 않고, 조건이나 횟수를 정해서 자동으로 돌리는 거다. 자바스크립트에선 for, while, do-while을 주로 쓴다.

내가 처음 반복문 배울 때 숫자를 1부터 10까지 출력하려면 한 줄씩 써야 하나 고민했는데, 반복문을 알게 되니까 코딩이 훨씬 효율적이 됐다. 반복문이 있으면 시간도 아끼고 코드도 깔끔해진다.

for 문 사용법

for 문은 정해진 횟수만큼 반복할 때 가장 많이 쓴다. 구조는 이렇다:

for (초기값; 조건; 증감식) {
    // 반복할 코드
}

1부터 5까지 숫자를 출력해보자:

for (let i = 1; i <= 5; i++) {
    console.log(i);
}

이 코드는 1, 2, 3, 4, 5를 순서대로 출력한다. 여기서: - let i = 1: 반복 시작 전 초기값 설정. - i <= 5: 조건이 참일 때까지 반복. - i++: 반복마다 i를 1씩 증가.

내가 처음 for 쓸 때 조건을 잘못 설정해서 무한 반복에 빠진 적이 있다. 예를 들어, i <= 5 대신 i >= 0을 쓰고 증감식을 빼면 끝없이 돈다. 조심해야 한다.

for 문은 배열 다룰 때도 유용하다:

let fruits = ["사과", "바나나", "오렌지"];
for (let i = 0; i < fruits.length; i++) {
    console.log(fruits[i]);
}

이건 "사과", "바나나", "오렌지"를 순서대로 출력한다. fruits.length가 3이라 i가 0, 1, 2까지 돈다.

while 문 사용법

while 문은 조건이 참일 때까지 반복한다. 횟수가 정해지지 않았을 때 쓰기 좋다. 구조는 간단하다:

while (조건) {
    // 반복할 코드
}

숫자를 5까지 출력해보자:

let i = 1;
while (i <= 5) {
    console.log(i);
    i++;
}

for 문과 비슷한 결과지만, 초기값과 증감식이 밖에 있다. 내가 while 쓸 때 조건 안에서 변수를 바꾸는 걸 깜빡하면 무한 루프에 걸려서 브라우저가 멈춘 적 있다. 반드시 조건이 언젠가 거짓이 되게 해야 한다.

do-while 문 사용법

do-while 문은 while과 비슷하지만, 코드를 먼저 한 번 실행한 뒤 조건을 확인한다:

do {
    // 반복할 코드
} while (조건);

예를 들어:

let i = 1;
do {
    console.log(i);
    i++;
} while (i <= 5);

이건 while과 똑같이 1부터 5까지 출력한다. 차이점은 조건이 거짓이어도 최소 한 번은 실행된다는 거다:

let i = 10;
do {
    console.log(i);
    i++;
} while (i <= 5);

여기선 i가 10이라 조건이 처음부터 거짓인데도 10이 한 번 출력된다. 내가 처음 이걸 쓸 때 조건 확인 시점이 달라서 혼란스러웠는데, 특정 상황에서 유용하다.

반복문 제어: break와 continue

반복문을 중간에 멈추거나 건너뛰고 싶을 때 breakcontinue를 쓴다.

break: 반복문을 완전히 종료한다:

for (let i = 1; i <= 10; i++) {
    if (i === 6) {
        break;
    }
    console.log(i);
}

이건 1부터 5까지만 출력하고 6에서 멈춘다. 내가 반복문 테스트할 때 조건 맞으면 멈추게 하고 싶을 때 자주 썼다.

continue: 현재 반복을 건너뛰고 다음으로 간다:

for (let i = 1; i <= 5; i++) {
    if (i === 3) {
        continue;
    }
    console.log(i);
}

이건 1, 2, 4, 5가 출력된다. 3에서 continue가 실행돼서 그 반복만 건너뛴다.

실습 예제

간단한 실습으로 조건문과 반복문을 합쳐보자:

let score = 85;
if (score >= 90) {
    console.log("A 등급");
} else if (score >= 80) {
    console.log("B 등급");
} else {
    console.log("C 등급 이하");
}

for (let i = 1; i <= 10; i++) {
    if (i % 2 === 0) {
        console.log(i + "는 짝수");
    }
}

위 코드는 점수를 등급으로 나누고, 1부터 10까지 짝수만 출력한다. 실행하면 "B 등급"과 짝수(2, 4, 6, 8, 10)가 나온다.

주의할 점

무한 반복에 빠지지 않게 조건을 잘 확인하자. breakcontinue를 잘못 쓰면 흐름이 꼬일 수 있다.

결론

이번 포스팅에서 조건문과 반복문의 기초를 다뤘다. ifswitch로 조건을 제어하고, for, while, do-while로 반복을 다뤘다. 다음엔 함수를 배워서 코드를 더 구조화해보자.

자바스크립트 변수와 데이터 타입 기초 - JavaScript 시리즈 #2

자바스크립트 변수와 데이터 타입 기초

JavaScript Logo

자바스크립트 100개 포스팅 시리즈의 두 번째 글에 온 걸 환영한다! 첫 번째 글에서 자바스크립트가 뭔지, 어디에 쓰이는지, 왜 중요한지 알아봤다면, 이번엔 실질적인 첫걸음을 내딛는다. 자바스크립트에서 변수를 선언하고 사용하는 방법, 그리고 데이터 타입의 기초를 다룰 거다. 코딩의 기본 중 기본이라 이걸 이해하면 앞으로 훨�ın 수월해진다.

변수는 데이터를 담는 상자 같은 거고, 데이터 타입은 그 상자에 담길 내용물의 종류다. 초보자든 좀 해본 사람이든, 이 기본기를 잘 다져놓으면 자바스크립트를 자유롭게 다룰 수 있다. 천천히 따라오면서 코드도 직접 쳐보면 좋다. 브라우저 콘솔이나 간단한 HTML 파일에서 테스트해보면서 배우자!

변수란 무엇인가?

Variable Declaration Example

변수는 데이터를 저장하고 나중에 꺼내 쓸 수 있게 이름을 붙인 거다. 자바스크립트에선 변수를 선언할 때 var, let, const라는 세 가지 키워드를 쓴다. 각각 쓰임새가 다르니까 하나씩 알아보자.

변수 선언 방법

var: 옛날부터 쓰이던 변수 선언 방식이다. 범위(scope)가 함수 단위로 적용되고, 같은 이름으로 여러 번 선언해도 에러 안 난다. 근데 이게 문제가 될 때가 많아서 요즘은 잘 안 쓴다. 예를 들면:

var name = "홍길동";
console.log(name); // "홍길동"
var name = "이순신"; // 다시 선언해도 문제없음
console.log(name); // "이순신"

내가 처음 var 썼을 땐 편했는데, 나중에 코드 꼬이는 걸 보고 놀랐다.

let: ES6에서 나온 현대적인 변수 선언법이다. 블록 범위(block scope)를 따르고, 같은 이름으로 재선언은 안 된다. 값은 바꿀 수 있다.

let age = 25;
console.log(age); // 25
age = 30; // 값 변경 가능
console.log(age); // 30
// let age = 35; // 이건 에러남 (재선언 불가)

요즘 내가 변수 쓸 때 주로 let을 쓴다. 범위 명확해서 안전하다.

const: 상수를 선언할 때 쓴다. 블록 범위고, 선언 후 값 변경도 재선언도 안 된다. 근데 객체 내부는 수정 가능하다(이건 나중에 설명).

const pi = 3.14;
console.log(pi); // 3.14
// pi = 3.14159; // 에러남 (값 변경 불가)

상수 이름은 보통 대문자(예: PI)로 짓는 관습도 있다.

변수 이름 짓는 규칙도 있다: 영문, 숫자, _, $만 쓴다(숫자로 시작하면 안 됨). CamelCase(예: myName)로 쓰는 게 일반적이다. 의미 있는 이름을 붙인다(x 대신 userName).

변수 스코프

Scope Diagram

변수 스코프는 변수가 어디까지 유효한지를 말한다. 자바스크립트엔 두 가지 스코프가 있다.

함수 스코프(Function Scope): var로 선언한 변수는 함수 안에서만 유효하다.

function test() {
    var x = 10;
    console.log(x); // 10
}
test();
console.log(x); // 에러남 (x is not defined)

블록 스코프(Block Scope): letconst는 블록(if, for 등) 안에서만 유효하다.

if (true) {
    let y = 20;
    console.log(y); // 20
}
console.log(y); // 에러남 (y is not defined)

내가 처음 스코프 배울 때 헷갈렸는데, 블록 스코프가 더 직관적이다.

데이터 타입이란?

Data Types Table

자바스크립트엔 여러 데이터 타입이 있다. 변수에 담을 수 있는 값의 종류를 말한다. 크게 원시 타입(Primitive)과 객체 타입(Object)으로 나뉜다. 먼저 원시 타입부터 보자.

원시 데이터 타입과 비원시 데이터 타입

Primitive vs Non-Primitive

숫자(Number): 정수든 소수든 숫자는 다 Number 타입이다. 계산하거나 크기 비교할 때 쓴다.

let height = 175.5;
let count = 10;
console.log(height + count); // 185.5

특이한 값으로 NaN(Not a Number), Infinity, -Infinity도 있다.

Number Types

문자열(String): 텍스트 데이터다. 따옴표('")로 감싼다.

let greeting = "안녕하세요";
let name = '홍길동';
console.log(greeting + ", " + name); // "안녕하세요, 홍길동"

불리언(Boolean): 참(true) 또는 거짓(false)만 있다.

let isAdult = true;
console.log(isAdult); // true

undefined: 변수 선언했는데 값이 없는 상태다.

let something;
console.log(something); // undefined

null: 의도적으로 "없음"을 나타낸다.

let empty = null;
console.log(empty); // null
Null Undefined

심볼(Symbol): ES6에서 추가된 타입으로, 고유한 식별자를 만든다.

let sym1 = Symbol("id");
let sym2 = Symbol("id");
console.log(sym1 === sym2); // false

객체(Object): 여러 데이터를 하나로 묶는다.

let person = {
    name: "홍길동",
    age: 25
};
console.log(person.name); // "홍길동"

배열과 함수도 객체 타입에 속한다.

타입 확인하기

데이터 타입을 확인하려면 typeof 연산자를 쓴다:

console.log(typeof 42); // "number"
console.log(typeof "hello"); // "string"
console.log(typeof true); // "boolean"
console.log(typeof undefined); // "undefined"
console.log(typeof null); // "object" (버그지만 남아있음)

타입 변환

Type Conversion

자바스크립트는 암묵적으로 타입을 바꾼다:

console.log("5" + 3); // "53"
console.log("5" - 3); // 2

명시적 변환도 가능하다:

let num = Number("123");
console.log(num); // 123

실습

Console Log

간단한 실습으로 해보자:

let name = "홍길동";
const age = 25;
let hobbies = ["축구", "게임"];
console.log(name, age, hobbies);

주의할 점

변수 선언 안 하면 전역 변수로 간다. 타입 변환 주의하자.

결론

JavaScript Ecosystem

이번 포스팅에서 자바스크립트 변수와 데이터 타입을 다뤘다. 다음엔 조건문과 반복문을 배워보자.

 

JavaScript 소개: 그것이 무엇이며 왜 중요한가

자바스크립트 100개 포스팅 시리즈의 첫 번째 글에 온 걸 환영한다! 이 글에선 자바스크립트가 무엇인지, 그 역사, 어디에 사용되는지, 브라우저에서 어떻게 작동하는지, 왜 배워야 하는지, 그리고 추가로 공부할 수 있는 자원들을 소개하려고 한다.

자바스크립트는 웹 개발의 핵심이고, 단순히 웹을 넘어선 다양한 분야에서도 활용된다. 이 글을 통해 자바스크립트의 전반적인 모습을 파악하고, 앞으로의 포스팅에서 더 깊이 들어갈 준비를 하자. 자바스크립트는 프로그래밍을 처음 접하는 사람에게도 친근한 언어로, 배우기 시작하면 그 가능성에 놀라게 될 거다.

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

자바스크립트는 고급 해석형 프로그래밍 언어로, 주로 웹에서 클라이언트 측 스크립팅에 사용된다. 웹 페이지에서 버튼을 누르면 색상이 바뀌거나, 양식을 제출하기 전에 입력값을 확인하거나, 애니메이션을 추가하는 등의 동적인 기능을 구현한다. 하지만 그 역할은 웹을 훨씬 넘어섰다. Node.js를 통해 서버 측 프로그래밍이 가능하고, React Native로 모바일 앱을, Electron으로 데스크톱 앱을 만들 수 있다.

이 언어는 고급 언어다. 즉, 메모리 관리나 포인터 같은 저수준 세부 사항을 신경 쓰지 않아도 된다. 컴파일 과정 없이 브라우저나 Node.js 같은 환경에서 바로 실행되기 때문에 빠르게 테스트하고 수정할 수 있다. 또 자바스크립트는 프로토타입 기반 언어인데, 클래스 기반 상속 대신 프로토타입을 통해 객체를 생성한다. 이 방식 덕분에 더 유연하고 동적인 코드를 짤 수 있다.

문법적으로는 C 언어 계열(예: C, Java, C++)과 비슷한 느낌이 있지만, 자바스크립트만의 독특한 특징이 있다. 예를 들어, 변수 선언에 var, let, const를 사용하고, 함수는 function 키워드로 정의하거나 화살표 함수(=>)로 간결하게 쓴다. 이런 점들이 처음엔 낯설 수 있지만, 익숙해지면 꽤 편리하다. 다른 언어와 비교하면, Python처럼 간결함을 지향하면서도 Java처럼 구조적인 면을 어느 정도 유지한다.

자바스크립트의 역사

자바스크립트는 1995년 브렌던 아이크(Brendan Eich)가 넷스케이프 커뮤니케이션스에서 만들었다. 처음 이름은 "LiveScript"였는데, 당시 Java가 시장에서 큰 인기를 끌자 마케팅 전략으로 "JavaScript"로 이름을 바꾼다. 사실 Java와는 아무런 관련이 없다. 이 이름 때문에 오해도 많았지만, 결국 웹 개발의 필수 언어로 자리 잡았다.

1997년, 자바스크립트는 ECMA International에 의해 ECMAScript라는 이름으로 표준화된다. 이후 ECMAScript는 자바스크립트의 공식 명세가 되었고, 버전이 올라가며 계속 발전한다. 주요 마일스톤을 보면:

- ES3 (1999): 기본적인 문법과 기능 강화.

- ES5 (2009): JSON 지원, 엄격 모드(strict mode) 추가로 안정성 높아진다.

- ES6 (2015, aka ES2015): 클래스, 화살표 함수, 프로미스, 모듈 등 현대적인 기능 대거 도입.

- 이후 매년 업데이트(ES2016, ES2017 등): async/await, 스프레드 연산자 등 추가.

ES6는 특히 큰 전환점이었다. 내가 처음 자바스크립트를 접했을 때 ES5만 썼는데, ES6의 화살표 함수와 let/const를 쓰니까 코드가 훨씬 깔끔해졌다. 또 2009년 Node.js가 나오면서 자바스크립트는 서버 측에서도 쓰이기 시작한다. 요즘은 React, Angular, Vue.js 같은 프레임워크 덕에 프론트엔드 개발의 중심이 됐다. 역사적으로 보면, 자바스크립트는 웹의 성장과 함께 계속 진화해온 언어라고 할 수 있다.

자바스크립트는 어디에 사용되나?

자바스크립트는 다재다능한 언어로, 여러 분야에서 활용된다. 내가 아는 주요 사용 사례를 정리해보면:

1. 웹 개발:

자바스크립트는 웹 페이지의 동적인 부분을 책임진다. 예를 들어, 소셜 미디어에서 "좋아요" 버튼을 누르면 즉시 숫자가 올라가는 건 자바스크립트가 처리한다. 양식 제출 전 입력값 확인, 스크롤 시 애니메이션 효과, 실시간 채팅 같은 기능도 다 자바스크립트 덕이다. 내가 처음 만든 웹 페이지에서 버튼 클릭으로 텍스트 색을 바꿨을 때 그 간단함에 놀랐다.

2. 서버 측 프로그래밍:

Node.js 덕분에 자바스크립트는 서버에서도 동작한다. LinkedIn, Uber, Netflix 같은 대기업이 백엔드를 Node.js로 돌린다. 예전에 간단한 API 서버를 만들어 봤는데, 웹 개발과 같은 언어를 쓰니까 배우기 쉬웠다.

3. 모바일 앱 개발:

React Native를 사용하면 자바스크립트로 iOS와 안드로이드용 네이티브 앱을 만들 수 있다. Facebook, Instagram, Airbnb 같은 앱이 React Native로 개발됐다. 모바일 개발은 아직 손대지 않았지만, 나중에 취미로 해볼 계획이다.

4. 데스크톱 앱 개발:

Electron이라는 프레임워크로 자바스크립트, HTML, CSS를 활용해 데스크톱 앱을 제작한다. Visual Studio Code, Slack, Discord가 대표적이다. 내가 쓰는 코드 편집기도 자바스크립트 기반이라니 신기하다.

5. 기타 사용 사례:

- 게임 개발: Phaser나 Pixi.js로 브라우저 기반 게임을 만든다. 간단한 2D 게임 정도는 금방 배울 수 있다.

- 데이터 시각화: D3.js나 Highcharts로 인터랙티브 차트를 구현한다. 회사에서 데이터 보여줄 때 써보고 싶다.

- IoT: 자바스크립트로 스마트 기기를 제어한다. 예를 들어, Raspberry Pi에서 실행 가능하다.

이 정도로 보면 자바스크립트는 거의 어디든 쓰인다. 웹에서 시작했지만 이제는 풀스택 개발, 모바일, 데스크톱, 심지어 사물인터넷까지 커버한다.

브라우저에서 자바스크립트는 어떻게 작동하나?

자바스크립트가 브라우저에서 어떻게 돌아가는지 이해하면 웹 개발이 훨씬 쉬워진다. 기본적인 작동 과정을 단계별로 풀어보면:

1. HTML 파싱 및 DOM 구축:

웹 페이지를 열면 브라우저는 먼저 HTML을 다운로드하고 파싱해서 DOM(Document Object Model)을 만든다. DOM은 웹 페이지의 구조를 트리 형태로 표현한 거다.

2. 자바스크립트 로드 및 실행:

<script> 태그를 만나면 브라우저는 자바스크립트 파일을 가져와서 실행한다. V8(Chrome), SpiderMonkey(Firefox) 같은 자바스크립트 엔진이 코드를 해석하고 실행한다.

3. DOM 조작:

자바스크립트는 DOM을 수정해서 페이지 콘텐츠를 동적으로 바꾼다. 예를 들어, 버튼 클릭 시 텍스트를 추가하거나 스타일을 변경한다.

4. 이벤트 루프와 비동기 처리:

자바스크립트는 단일 스레드지만, 이벤트 루프를 통해 비동기 작업(타이머, 서버 요청 등)을 관리한다. setTimeout이나 fetch 같은 함수가 대표적이다.

간단한 예제를 보자. 브라우저 개발자 도구(F12)를 열고 콘솔에서 아래 코드를 실행하면:

<!DOCTYPE html>
<html>
<head>
    <title>My First JavaScript</title>
</head>
<body>
    <h1>Hello, JavaScript!</h1>
    <script>
        console.log("자바스크립트 시작!");
    </script>
</body>
</html>

3초 후 메시지가 출력된다. 이런 식으로 자바스크립트는 브라우저에서 실시간으로 동작한다.

자바스크립트를 왜 배워야 하나?

자바스크립트를 배우는 이유는 많다. 내가 생각하는 주요 이유를 정리하면:

1. 높은 수요:

Stack Overflow Developer Survey 2020에 따르면 자바스크립트는 가장 많이 사용되는 프로그래밍 언어다. 웹 개발자, 풀스택 개발자 등 직업 기회가 많다.

2. 다재다능함:

프론트엔드와 백엔드를 모두 커버한다. Node.js로 서버를, React로 UI를 만들 수 있어서 경력 확장에 좋다. 내가 풀스택을 꿈꾸게 된 것도 이 때문이다.

3. 큰 커뮤니티:

자바스크립트 커뮤니티는 어마어마하다. 온라인 튜토리얼, 포럼, 오픈소스 프로젝트가 넘친다. 질문 있으면 Stack Overflow에서 금방 답을 찾는다.

4. 지속적인 발전:

ECMAScript 표준 덕에 매년 새로운 기능이 추가된다. ES6 이후로 개발이 훨씬 편해졌다. 언어가 계속 현대적으로 유지된다.

5. 재미와 창의성:

애니메이션, 게임, 복잡한 웹 앱을 만들면서 창의력을 발휘할 수 있다. 내가 처음 버튼 클릭으로 색 바꾼 뒤 코딩 재미에 푹 빠졌다.

이 외에도, 자바스크립트는 진입 장벽이 낮다. 브라우저만 있으면 바로 시작할 수 있어서 초보자에게도 추천한다.

추가 학습 자원

자바스크립트를 더 공부하려면 이런 자원을 참고하면 된다:

- MDN Web Docs: 자바스크립트 공식 문서로, 상세하고 정확하다. 내가 모를 때마다 여기서 찾는다.

- W3Schools: 간단한 튜토리얼과 예제가 많다. 입문용으로 좋다.

- FreeCodeCamp: 무료 코딩 챌린지와 프로젝트를 제공한다. 실습하기 딱이다.

- Udemy: 다양한 강의가 있다. 나도 여기서 몇 개 들어봤다.

- Stack Overflow: 질문과 답변이 빠르다. 실무 문제 해결에 유용하다.

시작하기

자바스크립트를 시작하려면 간단한 환경만 준비하면 된다. 브라우저(Chrome, Firefox 등)와 텍스트 편집기(VS Code 추천)가 있으면 충분하다. 첫 코드를 짜보려면 HTML 파일에 아래를 넣고 실행해본다:

<!DOCTYPE html>
<html>
<head>
    <title>My First JavaScript</title>
</head>
<body>
    <h1>Hello, JavaScript!</h1>
    <script>
        console.log("자바스크립트 시작!");
    </script>
</body>
</html>

파일을 브라우저로 열면 콘솔에 메시지가 찍힌다. 여기서부터 시작이다.

오해와 진실

자바스크립트에 대한 오해도 있다.

- "Java와 관련 있다": 이름만 비슷할 뿐, 완전히 다르다.

- "느리다": 초기엔 그랬지만, V8 엔진 같은 최적화로 이제 빠르다.

- "웹만 된다": Node.js로 서버, 앱 개발도 가능하다.

내가 처음엔 "자바스크립트가 쉬운 언어"라고 오해했는데, 깊이 파다 보니 꽤 복잡한 면도 있다.

미래 전망

자바스크립트는 앞으로도 중요하다. 웹어셈블리(WebAssembly)와 통합되며 성능이 더 좋아지고, AI/ML 라이브러리(TensorFlow.js)로 머신러닝까지 확장된다. 내가 볼 때 자바스크립트는 계속 성장할 거다.

최선의 관행

코드를 잘 쓰려면:

- 변수 이름은 의미 있게 짓는다(x 대신 userName).

- 주석으로 코드 설명한다.

- 들여쓰기와 공백으로 가독성 높인다.

개발 도구

추천 도구는:

- VS Code: 확장 기능 많고 가볍다.

- Chrome DevTools: 디버깅에 최고다.

- Node.js: 서버 개발 시작할 때 필수다.

프레임워크와 라이브러리 맛보기

자바스크립트 생태계는 방대하다.

- React: UI 개발에 강력하다.

- Vue.js: 간단하고 직관적이다.

- Angular: 엔터프라이즈 앱에 좋다.

- jQuery: DOM 조작 쉽게 한다(요즘은 덜 쓰인다).

결론

이 포스팅에서 자바스크립트의 기본 개념, 역사, 사용 사례, 브라우저 작동 방식, 학습 이유, 추가 자원을 다뤘다. 앞으로 99개의 글이 더 남았는데, 변수부터 비동기, 프레임워크까지 깊이 파볼 계획이다. 자바스크립트는 단순히 도구가 아니라 창의력을 발휘할 수 있는 언어다.

그럼 두 번째 글 작성하러 가보자.

JavaScript에 대한 100개 포스팅 범주

JavaScript에 대한 100개 포스팅 범주

JavaScript에 대한 100개 포스팅 범주

  • 기초 및 기본 개념: 변수, 데이터 타입, 연산자 등 10개 주제.
  • 문법 및 핵심 개념: 호이스팅, 스코프, 클래스 등 15개 주제.
  • 함수 및 스코프: 클로저, 커링, 메모이제이션 등 10개 주제.
  • 객체 및 프로토타입: 객체 생성, 상속, 프록시 등 10개 주제.
  • 배열 및 컬렉션: 배열 메서드, 타입드 배열 등 5개 주제.
  • 제어 구조: 조건문, 루프, 스위치 문 등 5개 주제.
  • 에러 처리: try-catch, 커스텀 에러, 디버깅 등 5개 주제.
  • 비동기 프로그래밍: 콜백, 프로미스, async/await 등 10개 주제.
  • DOM 및 브라우저 API: DOM 조작, 이벤트 처리, 웹소켓 등 10개 주제.
  • 라이브러리 및 프레임워크: jQuery, React, Node.js 등 5개 주제.
  • 테스트 및 디버깅: 유닛 테스트, DevTools 사용법 등 5개 주제.
  • 성능 최적화: 코드 최적화, 캐싱, 지연 로딩 등 5개 주제.
  • 보안: XSS, CSRF, HTTPS 등 5개 주제.
  • 최선의 관행: 코딩 표준, 모듈화, 버전 관리 등 5개 주제.
  • 고급 주제: 함수형 프로그래밍, 웹어셈블리, 리액티브 프로그래밍 등 10개 주제.

주제별 설명

기초 및 기본 개념: JavaScript의 기본 문법과 도구 설정. 예를 들어, 변수 선언, 데이터 타입, 연산자, 루프, 함수 등이 포함.

문법 및 핵심 개념: 호이스팅, 스코프, 클래스, 모듈 등 JavaScript의 고유한 동작 방식

함수 및 스코프: 클로저, 커링, 메모이제이션 등 함수 관련 고급 주제.

객체 및 프로토타입: 객체 생성, 프로토타입 상속, 프록시 등 객체 지향 프로그래밍 개념

배열 및 컬렉션: 배열 메서드, Set, Map, 타입드 배열 등 컬렉션 관련 주제

제어 구조: 조건문, 루프, 스위치 문 등 프로그램 흐름 제어 방법

에러 처리: 예외 처리, 커스텀 에러, 디버깅 기법 등

비동기 프로그래밍: 콜백, 프로미스, async/await, 이벤트 루프 등 비동기 처리 방법

DOM 및 브라우저 API: DOM 조작, 이벤트 처리, 브라우저 스토리지, 웹소켓 등 클라이언트 측 기능

라이브러리 및 프레임워크: jQuery, React, Angular, Node.js 등 인기 있는 도구와 프레임워크

테스트 및 디버깅: 유닛 테스트, DevTools 사용, TDD 등 품질 보증 방법

성능 최적화: 코드 최적화, 캐싱, 지연 로딩 등 성능 개선 기법

보안: XSS, CSRF, HTTPS 등 웹 보안 문제

최선의 관행: 코딩 표준, 모듈화, 버전 관리 등 개발 프로세스 최적화

고급 주제: 함수형 프로그래밍, 웹어셈블리, 리액티브 프로그래밍 등 최신 기술

범주 예시 주제 개수
기초 및 기본 개념 변수와 데이터 타입 10
문법 및 핵심 개념 호이스팅, 스코프 15
함수 및 스코프 클로저, 커링 10
객체 및 프로토타입 객체 생성, 상속 10
배열 및 컬렉션 배열 메서드, Set 5
제어 구조 조건문, 루프 5
에러 처리 try-catch, 디버깅 5
비동기 프로그래밍 프로미스, async/await 10
DOM 및 브라우저 API DOM 조작, 웹소켓 10
라이브러리 및 프레임워크 jQuery, React 5
테스트 및 디버깅 유닛 테스트, DevTools 5
성능 최적화 캐싱, 지연 로딩 5
보안 XSS, HTTPS 5
최선의 관행 코딩 표준, 모듈화 5
고급 주제 웹어셈블리, 리액티브 프로그래밍 10

오랜만에 하는 블로그 포스팅.

꾸준히 해보는걸로...!

+ Recent posts