[웹개발강의] JS(자바스크립트) 기초 학습자료(변수 선언 등)
1. 변수 선언: let, const, var
자바스크립트에서 변수를 선언할 때 사용하는 키워드는 let, const, var입니다.
let: 변경 가능한 변수 선언.
let score = 10;
score = 15; // 값 변경 가능
const: 변경 불가능한 상수 선언.
const pi = 3.14; // pi = 3.1415; // 오류 발생
var: 과거에 사용되던 변수 선언 방식으로, 현재는 let과 const 사용을 권장합니다.
var name = "Alice";
2. 데이터 타입
자바스크립트의 주요 데이터 타입은 다음과 같습니다:
숫자(Number):
let age = 25;
문자열(String):
let greeting = "Hello, world!";
불리언(Boolean):
let isStudent = true;
null: 의도적으로 "값이 없음"을 나타냄.
let data = null;
undefined: 값이 할당되지 않은 상태.
let result;
객체(Object):
let person = { name: "Bob", age: 30 };
배열(Array):
let colors = ["red", "green", "blue"];
함수(Function):
function sayHello() { console.log("Hello!"); }
3. 연산자
자바스크립트에서 사용되는 주요 연산자는 다음과 같습니다:
산술 연산자: +, -, *, /, %
let sum = 10 + 5; // 15
let product = 4 * 2; // 8
할당 연산자: =, +=, -=, *=, /=, %=
let x = 10;
x += 5; // x는 15
비교 연산자: ==, ===, !=, !==, >, <, >=, <=
5 == "5"; // true
5 === "5"; // false
논리 연산자: &&(AND), ||(OR), !(NOT)
true && false; // false
true || false; // true
!true; // false
삼항 연산자: 조건 ? 참일 때 값 : 거짓일 때 값
let age = 20; let status = age >= 18 ? "성인" : "미성년자";
4. 세미콜론(;)의 사용
자바스크립트에서는 문장의 끝에 세미콜론(;)을 사용하여 문장을 구분합니다.
let name = "Alice";
console.log(name);
세미콜론은 선택 사항이지만, 명확한 코드 작성을 위해 사용하는 것을 권장합니다.
5. 조건문
조건에 따라 다른 코드를 실행할 때 사용합니다.
if 문:
let score = 85;
if (score >= 90) {
console.log("A");
}
else if (score >= 80)
{
console.log("B");
} else {
console.log("C");
}
switch 문:
let day = 3;
switch (day) {
case 1:
console.log("월요일");
break;
case 2:
console.log("화요일");
break;
default:
console.log("다른 요일");
}
코드 설명:
- day 값이 3이므로 case 1, case 2에는 해당되지 않고,
- default 문이 실행되어 **"다른 요일"**이 출력됩니다.
6. 반복문
같은 코드를 여러 번 실행할 때 사용합니다.
🔁 for 문
for (let i = 0; i < 5; i++) {
console.log(i);
}
- i가 0부터 시작해서 4까지 출력됩니다 (0, 1, 2, 3, 4).
- 반복 횟수가 명확할 때 주로 사용합니다.
🔁 while 문
let i = 0;
while (i < 5) {
console.log(i);
i++;
}
- 조건이 참인 동안 반복 실행합니다.
- 실행 전에 조건을 검사합니다.
🔁 do...while 문
let i = 0;
do {
console.log(i);
i++;
} while (i < 5);
- 먼저 한 번 실행한 후, 조건을 검사합니다.
- 최소 1번은 실행되는 것이 특징입니다.
필요하면 각 문법에 대한 비교표도 추가해드릴 수 있어요!
7. 함수
재사용 가능한 코드 블록을 정의합니다.
📘 함수 선언 (Function Declaration)
function greet(name) {
console.log("Hello, " + name + "!");
}
greet("Alice"); // 출력: Hello, Alice!
- 전통적인 함수 선언 방식입니다.
- 호출을 함수 선언보다 앞에서 해도 동작합니다 (호이스팅 가능).
📗 함수 표현식 (Function Expression)
const greet = function(name) {
console.log("Hello, " + name + "!");
};
greet("Bob"); // 출력: Hello, Bob!
- 함수가 변수에 익명 함수 형태로 할당됩니다.
- 선언 이후에만 호출 가능 (호이스팅 불가).
📙 화살표 함수 (Arrow Function)
const greet = (name) => {
console.log("Hello, " + name + "!");
};
greet("Charlie"); // 출력: Hello, Charlie!
- 더 간결한 문법.
- this 바인딩 방식이 다릅니다 (일반 함수와 다르게 동작함에 주의).
필요하시면 return이 있는 함수 예제나 매개변수, 기본값, 스코프 설명도 추가로 드릴 수 있어요!
8. 배열
여러 개의 값을 순차적으로 저장하는 자료구조입니다.
📘 배열 선언
let fruits = ["apple", "banana", "cherry"];
- 문자열 "apple", "banana", "cherry"가 순서대로 저장된 배열입니다.
📗 배열 요소 접근
console.log(fruits[0]); // "apple"
console.log(fruits[1]); // "banana"
- fruits[0]는 첫 번째 요소, fruits[1]은 두 번째 요소를 의미합니다.
📙 배열 메서드 (일부 예시)
fruits.push("orange"); // 배열 끝에 요소 추가
console.log(fruits); // ["apple", "banana", "cherry", "orange"]
fruits.pop(); // 배열 끝 요소 제거
console.log(fruits); // ["apple", "banana", "cherry"]
fruits.shift(); // 배열 앞 요소 제거
console.log(fruits); // ["banana", "cherry"]
fruits.unshift("grape"); // 배열 앞에 요소 추가
console.log(fruits); // ["grape", "banana", "cherry"]
console.log(fruits.includes("banana")); // true
console.log(fruits.indexOf("cherry")); // 2
9. 주석(Comment)
코드에 설명을 추가하거나 실행을 막기 위해 주석을 사용합니다.
- 한 줄 주석:
// 이 부분은 주석입니다.
- 여러 줄 주석:
/*
이 부분은
여러 줄 주석입니다.
*/
10. 문자열(String) 다루기
문자열은 텍스트 데이터를 표현하며, 다양한 메서드를 통해 조작할 수 있습니다.
- 문자열 선언:
let text = "Hello, World!";
- 문자열 연결:
let greeting = "Hello, " + "Alice!";
- 문자열 길이 확인:
let length = text.length;
- 문자열 대소문자 변환:
let upper = text.toUpperCase();
let lower = text.toLowerCase();
11. 템플릿 리터럴(Template Literals)
백틱(`)을 사용하여 문자열 내에 변수나 표현식을 삽입할 수 있습니다.
let name = "Bob";
let message = `Hello, ${name}!`;
12. 배열(Array) 메서드
배열은 여러 데이터를 순차적으로 저장하며, 다양한 메서드를 통해 조작할 수 있습니다.
- 배열 선언:
let fruits = ["apple", "banana", "cherry"];
- 배열에 요소 추가:
fruits.push("orange");
- 배열에서 요소 제거:
fruits.pop();
- 배열 순회:
fruits.forEach(function(fruit) {
console.log(fruit);
});
13. 객체(Object) 다루기
객체는 키-값 쌍으로 데이터를 저장합니다.
- 객체 선언:
let person = {
name: "Charlie",
age: 30
};
- 속성 접근:
console.log(person.name);
- 속성 추가:
person.gender = "male";
14. 조건 연산자(Ternary Operator)
조건에 따라 값을 선택할 수 있습니다.
let age = 18;
let status = (age >= 18) ? "성인" : "미성년자";
15. 논리 연산자(Logical Operators)
논리 연산자를 사용하여 조건을 조합할 수 있습니다.
- AND (&&):
if (age > 18 && hasID) {
// 실행 코드
}
- OR (||):
if (isAdmin || isModerator) {
// 실행 코드
}
- NOT (!):
if (!isLoggedIn) {
// 실행 코드
}
16. 반복문 추가 예시: for...of 루프
배열이나 반복 가능한 객체를 순회할 때 사용합니다.
let colors = ["red", "green", "blue"];
for (let color of colors) {
console.log(color);
}
17. 함수 표현식(Function Expressions)
함수를 변수에 할당할 수 있습니다.
const greet = function(name) {
return `Hello, ${name}!`;
};
18. 화살표 함수(Arrow Functions)
간결한 함수 표현식입니다.
const greet = (name) => `Hello, ${name}!`;
19. 이벤트 처리(Event Handling)
사용자와의 상호작용을 처리할 수 있습니다.
<button id="myButton">Click me</button>
<script>
document.getElementById("myButton").addEventListener("click", function() {
alert("Button clicked!");
});
</script>
20. DOM(Document Object Model) 조작
HTML 요소를 동적으로 변경할 수 있습니다.
<p id="text">Original Text</p>
<script>
document.getElementById("text").textContent = "Updated Text";
</script>
실제 실습코드는 아래와 같습니다.
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>자바스크립트 기초 실습</title>
<style>
body { font-family: 'Noto Sans KR', sans-serif; padding: 20px; }
section { margin-bottom: 30px; }
h2 { border-left: 5px solid #0d6efd; padding-left: 10px; }
pre { background: #f8f9fa; padding: 10px; border-radius: 5px; }
</style>
</head>
<body>
<h1>📘 자바스크립트 기초 실습</h1>
<section>
<h2>1. 변수 선언</h2>
<script>
let score = 10;
score = 15;
const pi = 3.14;
var name = "Alice";
console.log("score:", score, "pi:", pi, "name:", name);
</script>
</section>
<section>
<h2>2. 데이터 타입</h2>
<script>
let age = 25;
let greeting = "Hello, world!";
let isStudent = true;
let data = null;
let result;
let person = { name: "Bob", age: 30 };
let colors = ["red", "green", "blue"];
function sayHello() { console.log("Hello!"); }
console.log(age, greeting, isStudent, data, result, person, colors);
sayHello();
</script>
</section>
<section>
<h2>3. 연산자</h2>
<script>
let sum = 10 + 5;
let product = 4 * 2;
let x = 10;
x += 5;
console.log("sum:", sum, "product:", product, "x:", x);
console.log("5 == '5' :", 5 == "5");
console.log("5 === '5' :", 5 === "5");
console.log("true && false:", true && false);
let age2 = 20;
let status = age2 >= 18 ? "성인" : "미성년자";
console.log("status:", status);
</script>
</section>
<section>
<h2>4. 세미콜론</h2>
<script>
let name4 = "Alice";
console.log(name4);
</script>
</section>
<section>
<h2>5. 조건문</h2>
<script>
let score5 = 85;
if (score5 >= 90) {
console.log("A");
} else if (score5 >= 80) {
console.log("B");
} else {
console.log("C");
}
let day = 3;
switch (day) {
case 1: console.log("월요일"); break;
case 2: console.log("화요일"); break;
default: console.log("다른 요일");
}
</script>
</section>
<section>
<h2>6. 반복문</h2>
<script>
for (let i = 0; i < 3; i++) console.log("for:", i);
let j = 0;
while (j < 3) { console.log("while:", j); j++; }
let k = 0;
do { console.log("do...while:", k); k++; } while (k < 3);
</script>
</section>
<section>
<h2>7. 함수</h2>
<script>
function greet(name) {
console.log("Hello, " + name + "!");
}
const greet2 = function(name) {
console.log("Hello, " + name + "!");
};
const greet3 = (name) => {
console.log("Hello, " + name + "!");
};
greet("Alice"); greet2("Bob"); greet3("Charlie");
</script>
</section>
<section>
<h2>8. 배열</h2>
<script>
let fruits = ["apple", "banana", "cherry"];
console.log(fruits[0]);
</script>
</section>
<section>
<h2>9. 주석</h2>
<pre>
// 한 줄 주석입니다.
/*
여러 줄
주석입니다.
*/
</pre>
</section>
<section>
<h2>10. 문자열 다루기</h2>
<script>
let text = "Hello, World!";
let greeting = "Hello, " + "Alice!";
let length = text.length;
let upper = text.toUpperCase();
let lower = text.toLowerCase();
console.log(greeting, length, upper, lower);
</script>
</section>
<section>
<h2>11. 템플릿 리터럴</h2>
<script>
let name11 = "Bob";
let message = `Hello, ${name11}!`;
console.log(message);
</script>
</section>
<section>
<h2>12. 배열 메서드</h2>
<script>
let fruits12 = ["apple", "banana", "cherry"];
fruits12.push("orange");
fruits12.pop();
fruits12.forEach(function(fruit) {
console.log(fruit);
});
</script>
</section>
<section>
<h2>13. 객체 다루기</h2>
<script>
let person13 = { name: "Charlie", age: 30 };
console.log(person13.name);
person13.gender = "male";
console.log(person13);
</script>
</section>
<section>
<h2>14. 조건 연산자</h2>
<script>
let age14 = 18;
let status14 = (age14 >= 18) ? "성인" : "미성년자";
console.log(status14);
</script>
</section>
<section>
<h2>15. 논리 연산자</h2>
<script>
let age15 = 20, hasID = true;
let isAdmin = false, isModerator = true, isLoggedIn = false;
if (age15 > 18 && hasID) console.log("성인입니다.");
if (isAdmin || isModerator) console.log("관리자 또는 중재자입니다.");
if (!isLoggedIn) console.log("로그인이 필요합니다.");
</script>
</section>
<section>
<h2>16. for...of 루프</h2>
<script>
let colors = ["red", "green", "blue"];
for (let color of colors) console.log(color);
</script>
</section>
<section>
<h2>17. 함수 표현식</h2>
<script>
const greet17 = function(name) {
return `Hello, ${name}!`;
};
console.log(greet17("David"));
</script>
</section>
<section>
<h2>18. 화살표 함수</h2>
<script>
const greet18 = (name) => `Hello, ${name}!`;
console.log(greet18("Emma"));
</script>
</section>
<section>
<h2>19. 이벤트 처리</h2>
<button id="myButton">클릭하세요</button>
<script>
document.getElementById("myButton").addEventListener("click", function() {
alert("Button clicked!");
});
</script>
</section>
<section>
<h2>20. DOM 조작</h2>
<p id="text20">Original Text</p>
<button onclick="document.getElementById('text20').textContent = 'Updated Text';">
텍스트 변경
</button>
</section>
</body>
</html>
실습하시느라 수고하셨습니다.^^