** ๐1๏ธโฃ ์ฐ์ฐ์ (Operators) ์ฌํ**
๐ฅ (1) ๋น๊ต ์ฐ์ฐ์: == vs === ์์ ํด๋ถ
์ฐ์ฐ์ | ๋น๊ต ๊ธฐ์ค | ํ์ ๋ณํ | ์ค๋ฌด ๊ถ์ฅ | ๋ฉด์ ํฌ์ธํธ |
---|---|---|---|---|
== |
๊ฐ๋ง ๋น๊ต | O (์๋ฌต์ ํ์ ๋ณํ) | โ ์ฌ์ฉ ์ง์ | โ์๋ฌต์ ํ์ ๋ณํ์ผ๋ก ์์ธก ๋ถ๊ฐ ๊ฒฐ๊ณผโ |
=== |
๊ฐ + ํ์ ๋ชจ๋ ๋น๊ต | X | โ ํญ์ ์ฌ์ฉ | โ์๊ฒฉ ๋น๊ต, ์์ โ |
๐งฉ ์๋ฌต์ ํ์ ๋ณํ ํธ๋ฉ ์์
console.log(0 == ''); // true (0 == 0)
console.log(false == '0'); // true (false โ 0, '0' โ 0)
console.log(null == undefined); // true
console.log([] == false); // true ([] โ '' โ 0 โ false)
๐ ์ค๋ฌด & ๋ฉด์ ํ์ด ํฌ์ธํธ:
==์ ์๋ฌต์ ํ์ ๋ณํ โ ์์ธก ๋ถ๊ฐ โ ํญ์ === ์ฌ์ฉ ์ต๊ดํ!
๐ง ๋ ผ๋ฆฌ ์ฐ์ฐ์ & ๋จ๋ฝ ํ๊ฐ (Short-Circuit Evaluation)
๐ฅ 1๏ธโฃ ๋ ผ๋ฆฌ ์ฐ์ฐ์ ์ข ๋ฅ
์ฐ์ฐ์ | ์๋ฏธ | ๋ฐํ๊ฐ |
---|---|---|
&& (AND) |
๋ ๋ค ์ฐธ โ ์ฐธ | ์ผ์ชฝ ๊ฐ์ด Falsy โ ๊ทธ ๊ฐ ๋ฐํ, ๋ ๋ค Truthy โ ์ค๋ฅธ์ชฝ ๊ฐ ๋ฐํ |
|| (OR) |
๋ ์ค ํ๋ ์ฐธ โ ์ฐธ | ์ผ์ชฝ ๊ฐ์ด Truthy์ด๋ฉด โ ๊ทธ ๊ฐ์ ๋ฐ๋ก ๋ฐํ, ์ผ์ชฝ์ด Falsy๋ฉด โ ์ค๋ฅธ์ชฝ ๊ฐ ๋ฐํ |
! (NOT) |
๋ถ์ | Boolean ๋ฐ๋๊ฐ ๋ฐํ (true โ false, false โ true) |
๐ 1๏ธโฃ OR(||
) - ๊ธฐ๋ณธ๊ฐ ์ค์
๐ ์ค๋ช
- ์ผ์ชฝ ๊ฐ์ด Truthy์ด๋ฉด โ ๊ทธ ๊ฐ์ ๋ฐ๋ก ๋ฐํ
- ์ผ์ชฝ์ด Falsy๋ฉด โ ์ค๋ฅธ์ชฝ ๊ฐ ๋ฐํ
- ๊ธฐ๋ณธ๊ฐ ์ง์ ํจํด์์ ์์ฃผ ์ฌ์ฉ
๐ก ์์
const input = '';
const value = input || 'Default';
console.log(value); // 'Default'
- input์ด ๋น ๋ฌธ์์ด(
Falsy
) โ โDefaultโ ๋ฐํ
๐ ์ค๋ฌด ํ์ฉ
function getUsername(username) {
return username || 'Guest';
}
console.log(getUsername('Tom')); // 'Tom'
console.log(getUsername('')); // 'Guest'
โ ์ค๋ช :
์ ๋ ฅ๊ฐ์ด ๋น์ด์์ ๊ฒฝ์ฐ โ ๊ธฐ๋ณธ๊ฐ โGuestโ ์๋ ์ง์
๐ 2๏ธโฃ AND(&&
) - ์กฐ๊ฑด๋ถ ์คํ
๐ ์ค๋ช
- ์ผ์ชฝ ๊ฐ์ด Falsy์ด๋ฉด โ ๋ฐ๋ก ๋ฐํ (ํ๊ฐ ์ค๋จ)
- ์ผ์ชฝ์ด Truthy๋ฉด โ ์ค๋ฅธ์ชฝ ์คํ
๐ก ์์
const user = null;
const name = user && user.name;
console.log(name); // null โ ํ๊ฐ ์ค๋จ
๐ ์ค๋ฌด ํ์ฉ
isLoggedIn && logout();
โ ์ค๋ช :
isLoggedIn์ด true์ผ ๋๋ง logout() ์คํ
๐ 3๏ธโฃ NOT(!
) - Boolean ๋ฐ์
๐ ์์
const isAvailable = false;
console.log(!isAvailable); // true
๐ ์ค๋ฌด: ์กฐ๊ฑด ๋ฐ์ ์ ์ ์ฉ
๐งฉ 3๏ธโฃ ์ค์ ์์
โ
AND(&&
) - ์กฐ๊ฑด๋ถ ์คํ
const user = null;
const name = user && user.name;
console.log(name); // null โ ํ๊ฐ ์ค๋จ
- ์ผ์ชฝ(user)์ด null (Falsy)์ด๋ฏ๋ก ํ๊ฐ ์ค๋จ, null ๋ฐํ
โ
OR(||
) - ๊ธฐ๋ณธ๊ฐ ์ค์
const input = '';
const value = input || 'Default';
console.log(value); // 'Default'
- ์ผ์ชฝ์ด โโ(Falsy) โ ์ค๋ฅธ์ชฝ โDefaultโ ๋ฐํ
โ
NOT(!
) - Boolean ๋ฐ์
const isLoggedIn = false;
console.log(!isLoggedIn); // true
๐ (3) ์ฐ์ฐ์ ์ฐ์ ์์ ๋์ํ
์ฐ์ ์์ | ์ฐ์ฐ์ | ์์ |
---|---|---|
1 | () |
(a + b) |
2 | * , / , % |
a * b |
3 | + , - |
a + b |
4 | < , > , <= , >= |
a > b |
5 | == , === , != |
a === b |
6 | && , ` |
ย |
7 | = , += |
a = b |
๐ฏ 2๏ธโฃ ์กฐ๊ฑด๋ฌธ (Conditionals) ์ฌํ
๐ฅ (1) if-else ์ฌํ
const age = 20;
if (age >= 18) {
console.log('์ฑ์ธ');
} else if (age >= 13) {
console.log('์ฒญ์๋
');
} else {
console.log('์ด๋ฆฐ์ด');
}
๐ ๊ฐ๋ ์ฑ ํ:
๋ณต์ก ์กฐ๊ฑด์ผ์๋ก if-else ๋ช ํํ! ์ผํญ ์ฐ์ฐ์ ๋จ์ฉ ๊ธ์ง
๐งฉ (2) switch ๋ฌธ & case fall-through ๋ฌธ์ ๋ฐฉ์ง
const fruit = 'apple';
switch (fruit) {
case 'apple':
console.log('๐');
break; // break ํ์!
case 'banana':
console.log('๐');
break;
default:
console.log('Unknown fruit');
}
โ ๏ธ ์ฌํ: case fall-through ์๋์ ์ผ๋ก ํ์ฉ
const key = 2;
switch (key) {
case 1:
case 2:
console.log('1 ๋๋ 2'); // ๋ ๋ค ์คํ
break;
}
๐ฅ (3) ์ผํญ ์ฐ์ฐ์ ์ค์ฒฉ โ ๊ฐ๋ ์ฑ ๊ฒฝ๊ณ
const score = 85;
const grade = score > 90 ? 'A' : score > 80 ? 'B' : 'C';
console.log(grade); // 'B'
๐ ์ค๋ฌด ํ:
์ค์ฒฉ ๋ณต์ก โ ๋ฐ๋์ if-else๋ก ๋ณํ
๐ 3๏ธโฃ ๋ฐ๋ณต๋ฌธ (Loops) ์ฌํ
๋ฐ๋ณต๋ฌธ | ํน์ง | ์ฌ์ฉ ์ํฉ | ์ฃผ์ |
---|---|---|---|
for |
์ธ๋ฑ์ค ๊ธฐ๋ฐ | ๋ฐฐ์ด, ๊ณ ์ ํ์ | break/continue ๊ฐ๋ฅ |
for...in |
๊ฐ์ฒด key ์ํ | ๊ฐ์ฒด ํ์ | ๋ฐฐ์ด ์ฌ์ฉ ์ key ์ธ ํ๋กํผํฐ ํฌํจ |
for...of |
iterable ์ํ | ๋ฐฐ์ด, ๋ฌธ์์ด, Set, Map | ๊ฐ์ฒด ์ฌ์ฉ ๋ถ๊ฐ |
.forEach() |
๋ฐฐ์ด ์ํ | ์ฝ๋ฐฑ ๊ธฐ๋ฐ ์ฒ๋ฆฌ | break/continue ๋ถ๊ฐ |
๐งฉ for-in vs for-of ์ค๋ฌด ํธ๋ฉ ์์
let arr = ['a', 'b', 'c'];
arr.extra = 'test';
for (let key in arr) {
console.log(key); // '0', '1', '2', 'extra' (์์น ์๋ key ํฌํจ)
}
for (let val of arr) {
console.log(val); // 'a', 'b', 'c'
}
โ
๋ฐฐ์ด์ ๋ฐ๋์ โ for-of
์ฌ์ฉ ๊ถ์ฅ
๐ฅ forEach ์ ์ฝ์ ์ฌํ
arr.forEach(val => {
if (val === 'b') return; // break ๋ถ๊ฐ
});
๐ ์ค๋ฌด ํ:
break ํ์ โ for or for-of ์ฌ์ฉ
๐ง 4๏ธโฃ ์ค๋ฌด & ๋ฉด์ ํ์ด ํฌ์ธํธ ์ ๋ฆฌ
์ง๋ฌธ | ํต์ฌ ๋ต๋ณ |
---|---|
== vs === ์ฐจ์ด? | ํ์
๋ณํ ์ฌ๋ถ, === ํญ์ ๊ถ์ฅ |
๋จ๋ฝ ํ๊ฐ ์ค๋ฌด ํ์ฉ? | ์กฐ๊ฑด๋ถ ์คํ, ๊ธฐ๋ณธ๊ฐ ์ฒ๋ฆฌ |
switch fall-through ๋ฌธ์ ? | break ์๋ต โ ์๋์น ์์ ์คํ |
for-in vs for-of ์ฐจ์ด? | ๊ฐ์ฒด key vs iterable ์ํ |
forEach ํ๊ณ? | break/continue ๋ถ๊ฐ |
์ผํญ ์ฐ์ฐ์ ์ธ์ ์ฌ์ฉ? | ๊ฐ๋จํ ์กฐ๊ฑด์์๋ง, ๋ณต์ก ์กฐ๊ฑด X |
๐ 5๏ธโฃ ๋ ธ์ ์ฉ ํ ๊น๋ ์ ๋ฆฌ
๐ ์ฐ์ฐ์
์ฐ์ฐ์ | ๊ธฐ๋ฅ | ํน์ง |
---|---|---|
== |
๊ฐ ๋น๊ต | ํ์ ๋ณํ ๋ฐ์ (์ฃผ์) |
=== |
๊ฐ+ํ์ ๋น๊ต | ํ์ ๋ณํ X |
๐ ์กฐ๊ฑด๋ฌธ
์ข ๋ฅ | ํน์ง | ์ฃผ์ |
---|---|---|
if-else | ๋ณต์ก ์กฐ๊ฑด ์ฒ๋ฆฌ | ๊ฐ๋ ์ฑ ์ข์ |
switch | ๋ค์ค ์กฐ๊ฑด ์ฒ๋ฆฌ | break ํ์ |
์ผํญ | ๊ฐ๊ฒฐ ํํ | ์ค์ฒฉ ๊ฐ๋ ์ฑ โ |
๐ ๋ฐ๋ณต๋ฌธ
๋ฐ๋ณต๋ฌธ | ์ฌ์ฉ ์ํฉ | ํน์ฑ | ์ฃผ์ |
---|---|---|---|
for | ๊ณ ์ ํ์ | break/continue ๊ฐ๋ฅ | ย |
for-in | ๊ฐ์ฒด key | key ์ํ | ๋ฐฐ์ด ์ฌ์ฉ ์ ์ฃผ์ |
for-of | iterable | ๊ฐ ์ํ | ๊ฐ์ฒด ์ฌ์ฉ ๋ถ๊ฐ |
forEach | ๋ฐฐ์ด | ์ฝ๋ฐฑ ์ฒ๋ฆฌ | break ๋ถ๊ฐ |
๐ 6๏ธโฃ ๋ง๋ฌด๋ฆฌ ์ฝ๋ ์์ ์ ๋ฆฌ
๐ ์ฐ์ฐ์
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript ์ฐ์ฐ์ ์ฌํ</title>
</head>
<body>
<script>
/*
๐ 1. ์ฐ์ ์ฐ์ฐ์ (Arithmetic Operators)
---------------------------------------
1) ๋ํ๊ธฐ : + โ
2) ๋นผ๊ธฐ : - โ
3) ๊ณฑํ๊ธฐ : * โ๏ธ
4) ๋๋๊ธฐ : / โ (5/2 = 2.5) => ์ ์ํ ํจ์ ์ฌ์ฉ ๊ฐ๋ฅ:
- parseInt(5/2) => 2
- Math.floor(5/2) => 2
5) ๋๋จธ์ง : % (์ง์/ํ์ ํ๋ณ ์์ฃผ ์ฌ์ฉ)
6) ์ฆ๊ฐ, ๊ฐ์ ์ฐ์ฐ์ : ++, -- (์จ๊น X, ๋ช
์์ )
7) ์ ๊ณฑ : ** (2**3 => 8)
*/
console.log("๐ ์ฐ์ ์ฐ์ฐ์ ์์");
let x = 5;
let y = 2;
console.log(`๋ํ๊ธฐ โ : ${x + y}`); // 7
console.log(`๋นผ๊ธฐ โ : ${x - y}`); // 3
console.log(`๊ณฑํ๊ธฐ โ๏ธ : ${x * y}`); // 10
console.log(`๋๋๊ธฐ โ : ${x / y}`); // 2.5
console.log(`์ ์ ๋๋๊ธฐ(parseInt) : ${parseInt(x / y)}`); // 2
console.log(`์ ์ ๋๋๊ธฐ(Math.floor) : ${Math.floor(x / y)}`); // 2
console.log(`๋๋จธ์ง % : ${x % y}`); // 1
console.log(`์ ๊ณฑ ** : ${2 ** 3}`); // 8
// ++, -- ์ฐ์ฐ์ (์ฃผ์: ์ ์/ํ์ ์ฐจ์ด!)
let num = 1;
console.log(`์ ์ ์ฆ๊ฐ: ${++num}`); // ๋จผ์ ์ฆ๊ฐ ํ ์ถ๋ ฅ โ 2
console.log(`ํ์ ์ฆ๊ฐ: ${num++}`); // ์ถ๋ ฅ ํ ์ฆ๊ฐ โ 2
console.log(`ํ์ฌ num: ${num}`); // 3
console.log("--------------------------------------------");
/*
๐ 2. ๋น๊ต ์ฐ์ฐ์ (Comparison Operators)
---------------------------------------
>, >=, <, <=
== : ๊ฐ๋ง ๋น๊ต (1 == '1' : true)
=== : ๊ฐ + ์๋ฃํ ๋น๊ต (1 === '1' : false)
!= : ๊ฐ๋ง ๋น๊ต (1 != '1' : false)
!== : ๊ฐ + ์๋ฃํ ๋น๊ต (1 !== '1' : true)
*/
console.log("๐ ๋น๊ต ์ฐ์ฐ์ ์์");
console.log(5 > 3); // true
console.log(5 >= 5); // true
console.log(2 < 4); // true
console.log(2 <= 1); // false
console.log(1 == '1'); // true (์๋ฃํ ๋ฌด์)
console.log(1 === '1'); // false (์๋ฃํ ์๊ฒฉ ๋น๊ต)
console.log(1 != '1'); // false
console.log(1 !== '1'); // true
console.log("--------------------------------------------");
/*
๐ 3. ๋
ผ๋ฆฌ ์ฐ์ฐ์ (Logical Operators)
---------------------------------------
&& : AND (๋ ๋ค ์ฐธ)
|| : OR (ํ๋๋ผ๋ ์ฐธ)
! : NOT (๋ถ์ )
*/
console.log("๐ ๋
ผ๋ฆฌ ์ฐ์ฐ์ ์์");
console.log(true && true); // true
console.log(true && false); // false
console.log(false || true); // true
console.log(!true); // false
console.log("--------------------------------------------");
/*
๐ 4. ๋์
์ฐ์ฐ์ (Assignment Operators)
---------------------------------------
= : ๋์
+= : ๋์ ๋ํ๊ธฐ
-=, *=, /= ๊ฐ๋ฅ
*/
console.log("๐ ๋์
์ฐ์ฐ์ ์์");
let a = 10;
a += 5; // a = a + 5
console.log(a); // 15
a *= 2;
console.log(a); // 30
console.log("--------------------------------------------");
/*
๐ 5. ์กฐ๊ฑด ์ฐ์ฐ์ (์ผํญ ์ฐ์ฐ์)
---------------------------------------
(์กฐ๊ฑด์) ? ์ฐธ : ๊ฑฐ์ง
*/
console.log("๐ ์กฐ๊ฑด ์ฐ์ฐ์ ์์");
let score = 85;
let result = (score >= 60) ? "ํฉ๊ฒฉ ๐" : "๋ถํฉ๊ฒฉ โ";
console.log(result); // ํฉ๊ฒฉ ๐
console.log("--------------------------------------------");
/*
๐ 6. ๋ฌธ์์ด ์ฐ์ฐ์
---------------------------------------
+ : ๋ฌธ์์ด ์ฐ๊ฒฐ
*/
console.log("๐ ๋ฌธ์์ด ์ฐ์ฐ์ ์์");
let first = "Hello";
let second = "World";
console.log(first + " " + second); // Hello World
</script>
<script>
/*
๐ ์ฌํ ์์ : ์ต์ ์๊ธ ๊ณ์ฐ๊ธฐ
---------------------------------------
์ต์ ์๊ธ์ด 9620์์ด๋ค.
8์๊ฐ๊น์ง๋ ์ต์ ์๊ธ์ ๋ฐ๊ณ ,
8์๊ฐ ์ด๊ณผ ๊ทผ๋ฌด๋ ์ต์ ์๊ธ์ 1.5๋ฐฐ๋ฅผ ๋ฐ๋๋ค.
10์๊ฐ ๊ทผ๋ฌดํ์ ๋์ ์ผ๋น์ ๊ตฌํ๊ธฐ
*/
function calculatePay(hours) {
const basePay = 9620; // ์ต์ ์๊ธ
let totalPay = 0;
if (hours > 8) {
let regular = basePay * 8; // 8์๊ฐ ๊ธฐ๋ณธ๊ธ
let overtime = basePay * 1.5 * (hours - 8); // ์ด๊ณผ ๊ทผ๋ฌด ์๋น
totalPay = regular + overtime;
console.log(`๐ผ ๊ธฐ๋ณธ๊ธ: ${regular}์, โฐ ์ด๊ณผ์๋น: ${overtime}์`);
} else {
totalPay = basePay * hours;
console.log(`๐ผ ๊ธฐ๋ณธ๊ธ: ${totalPay}์ (์ด๊ณผ ๊ทผ๋ฌด ์์)`);
}
console.log(`์ด ์ผ๋น ๐ฐ: ${totalPay}์`);
}
calculatePay(10); // 10์๊ฐ ๊ทผ๋ฌด ์ ๊ณ์ฐ
/*
โ
๊ฐ์ :
- ๋ณ์๋ช
์๋ฏธ ์๊ฒ ๋ณ๊ฒฝ (a โ basePay, b โ totalPay ๋ฑ)
- ๋ถํ์ํ let b ์ญ์
- console.log์ ๊ฒฐ๊ณผ ๋ณด๊ธฐ ์ฝ๊ฒ ๊ตฌ์ฑ
- ํจ์ ์ฌํ์ฉ์ฑ ๋์
*/
</script>
<script>
/*
๐ ์ถ๊ฐ ์ฌํ ์์ : ํ์/์ง์ ํ๋ณ๊ธฐ (๋๋จธ์ง ์ฐ์ฐ์ ์์ฉ)
*/
function checkOddEven(num) {
let result = (num % 2 === 0) ? "์ง์ โจ" : "ํ์ ๐";
console.log(`${num}์(๋) ${result}`);
}
checkOddEven(5); // ํ์
checkOddEven(12); // ์ง์
</script>
</body>
</html>
๐ ์กฐ๊ฑด๋ฐ๋ณต๋ฌธ
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>์กฐ๊ฑด๋ฌธ & ๋ฐ๋ณต๋ฌธ ์์ ์ ๋ณต</title>
<style>
body {
font-family: Arial, sans-serif;
background-color: #f9f9f9;
padding: 20px;
}
.score {
margin: 10px 0;
}
.high {
color: green;
font-weight: bold;
}
.low {
color: red;
font-weight: bold;
}
.pass {
color: blue;
}
.fail {
color: darkred;
}
#box1, #box2, #box3 {
margin: 10px 0;
padding: 5px;
background: #e0e0e0;
}
</style>
</head>
<body>
<h2>๐ ํ์ ์ ์ํ (์กฐ๊ฑด๋ฌธ + ๋ฐ๋ณต๋ฌธ)</h2>
<!-- ๊ณผ๋ชฉ ์ ์ ์์ญ -->
<div id="scores">
<div class="score">๊ตญ์ด ์ ์: <span data-subject="kor">0</span>์ </div>
<div class="score">์์ด ์ ์: <span data-subject="eng">0</span>์ </div>
<div class="score">์ํ ์ ์: <span data-subject="math">0</span>์ </div>
</div>
<div class="score">๐ ํ๊ท ์ ์: <span id="average">0</span>์ </div>
<div class="score">๐ก ๊ฒฐ๊ณผ: <span id="result">-</span></div>
<hr>
<h3>๐ ๋ฐ๋ณต๋ฌธ ์ฐ์ต ์์ญ</h3>
<div id="box1">๐ฉ while๋ฌธ ๊ฒฐ๊ณผ: </div>
<div id="box2">๐ฉ for๋ฌธ ๊ฒฐ๊ณผ: </div>
<div id="box3">๐ฉ do-while๋ฌธ ๊ฒฐ๊ณผ: </div>
<script>
// ๐ 1๏ธโฃ ๋ฐ์ดํฐ ์ค๋น: ๋ฐฐ์ด + ๊ฐ์ฒด ํ์ฉ
const subjects = [
{ name: "๊ตญ์ด", key: "kor", score: 0 },
{ name: "์์ด", key: "eng", score: 0 },
{ name: "์ํ", key: "math", score: 0 }
];
// ๐ 2๏ธโฃ ์ฌ์ฉ์ ์
๋ ฅ: prompt๋ก ์ ์ ์
๋ ฅ๋ฐ๊ธฐ
subjects.forEach(subject => {
let input = prompt(`โ๏ธ ${subject.name} ์ ์๋ฅผ ์
๋ ฅํ์ธ์ (0~100):`);
// ์
๋ ฅ๊ฐ ๊ฒ์ฆ
if (input !== null && !isNaN(input) && input.trim() !== "") {
let score = parseInt(input);
if (score >= 0 && score <= 100) {
subject.score = score;
} else {
alert("โ 0~100 ์ฌ์ด ์ซ์๋ง ์
๋ ฅํ์ธ์!");
location.reload(); // ์๋ชป๋ ์
๋ ฅ ์ ๋ค์
}
} else {
alert("โ ์ซ์๋ฅผ ์ ๋๋ก ์
๋ ฅํ์ธ์!");
location.reload();
}
});
// ๐ 3๏ธโฃ ์ ์ํ ํ์ & ์คํ์ผ ์ ์ฉ
let total = 0;
subjects.forEach(subject => {
const span = document.querySelector(`span[data-subject="${subject.key}"]`);
span.textContent = subject.score;
total += subject.score;
// ์ ์ ์กฐ๊ฑด์ ๋ฐ๋ผ ์์ ์ ์ฉ
if (subject.score >= 90) {
span.classList.add("high"); // 90์ ์ด์
} else if (subject.score < 60) {
span.classList.add("low"); // 60์ ๋ฏธ๋ง
}
});
// ๐ 4๏ธโฃ ํ๊ท ๊ณ์ฐ & ์ถ๋ ฅ
const average = (total / subjects.length).toFixed(2);
document.getElementById("average").textContent = average;
// ๐ 5๏ธโฃ ์กฐ๊ฑด๋ฌธ (switch)์ผ๋ก ํ์ ํ์
const avgGrade = Math.floor(average / 10);
const resultSpan = document.getElementById("result");
switch (avgGrade) {
case 10:
case 9:
resultSpan.textContent = "A (์ฐ์)";
resultSpan.classList.add("pass");
break;
case 8:
resultSpan.textContent = "B (์ํธ)";
resultSpan.classList.add("pass");
break;
case 7:
resultSpan.textContent = "C (๋ณดํต)";
resultSpan.classList.add("pass");
break;
case 6:
resultSpan.textContent = "D (๋ฏธํก)";
resultSpan.classList.add("fail");
break;
default:
resultSpan.textContent = "F (๋ถํฉ๊ฒฉ)";
resultSpan.classList.add("fail");
}
// =====================
// ๐ฅ ๋ฐ๋ณต๋ฌธ ์ฌํ ์ฐ์ต
// =====================
// ๐ 6๏ธโฃ while๋ฌธ: 1~5 ์ถ๋ ฅ
let i = 1;
while (i <= 5) {
document.getElementById("box1").innerHTML += `${i} `;
i++;
}
// ๐ 7๏ธโฃ for๋ฌธ: 5~1 ์ญ์ ์ถ๋ ฅ
for (let j = 5; j >= 1; j--) {
document.getElementById("box2").innerHTML += `${j} `;
}
// ๐ 8๏ธโฃ do-while๋ฌธ: 1~5 ์ถ๋ ฅ + ์กฐ๊ฑด ํ๋ฒ๋ง ํ์ธ
let k = 1;
do {
document.getElementById("box3").innerHTML += `${k} `;
k++;
} while (k <= 5);
// ๐ 9๏ธโฃ ์ฌํ: ์ค์ฒฉ for๋ฌธ์ผ๋ก ๊ตฌ๊ตฌ๋จ ์ผ๋ถ ์ถ๋ ฅ
document.write(`<hr><h3>๐ ๊ตฌ๊ตฌ๋จ 2๋จ~4๋จ</h3>`);
for (let dan = 2; dan <= 4; dan++) {
document.write(`<strong>๐ข ${dan}๋จ</strong><br>`);
for (let n = 1; n <= 9; n++) {
document.write(`${dan} ร ${n} = ${dan * n}<br>`);
}
document.write(`<br>`);
}
</script>
</body>
</html>
๐ ๋ฐ์ดํฐ ์ ์ถ๋ ฅ ์กฐ๊ฑด๋ฌธ
<!DOCTYPE html>
<html lang="ko">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>JavaScript ๋ฐ์ดํฐ ์
์ถ๋ ฅ ์์ ์ ๋ณต</title>
<style>
body {
font-family: Arial, sans-serif;
line-height: 1.6;
}
table, th, td {
border: 1px solid #000;
border-collapse: collapse;
padding: 5px;
}
</style>
</head>
<body>
<h2>๐ข ๋ฐ์ดํฐ ์ถ๋ ฅํ๋ ๋ฐฉ๋ฒ๋ค</h2>
<ul>
<li>๐ข <strong>alert()</strong> โ ํ์ธ์ฐฝ์ ๋ฉ์์ง ๋์ฐ๊ธฐ</li>
<li>๐ต <strong>console.log()</strong> โ ๊ฐ๋ฐ์ ์ฝ์์ฐฝ์ ๋ฉ์์ง ์ถ๋ ฅ</li>
<li>๐ก <strong>document.write()</strong> โ ํ์ด์ง์ ๋ฐ๋ก ์ถ๋ ฅ (๋น์ถ์ฒ)</li>
<li>๐ฃ <strong>innerHTML / innerText</strong> โ ํน์ ํ๊ทธ ์์ ๊ฐ ๋ฃ๊ธฐ</li>
</ul>
<!-- innerHTML๋ก ์ถ๋ ฅํ ๊ณณ -->
<div id="outputArea"></div>
<script>
// 1๏ธโฃ alert() โ ๋ธ๋ผ์ฐ์ ํ์ธ์ฐฝ์ ๋์ฐ๊ธฐ
alert("๐จ ์๋ฆผ์ฐฝ์ ๋ฉ์์ง๋ฅผ ๋์๋๋ค!");
// 2๏ธโฃ document.write() โ ํ์ด์ง์ ๋ฐ๋ก ์ถ๋ ฅ (์๋ก๊ณ ์นจํ๋ฉด ์ด์ ๋ด์ฉ ๋ฎ์ด์์, ์ค์ ๋ก ์ ์ ์)
document.write("<hr>");
document.write("๐ document.write()๋ก ์ง์ ํ๋ฉด์ ์ถ๋ ฅํฉ๋๋ค!<br>");
// 3๏ธโฃ console.log() โ ๊ฐ๋ฐ์ ๋๊ตฌ(F12) ์ฝ์์ฐฝ์์ ํ์ธ
console.log("๐ ๏ธ ์ฝ์์ฐฝ์ ๋๋ฒ๊น
์ฉ ๋ฉ์์ง ์ถ๋ ฅ!");
// 4๏ธโฃ innerHTML ์ฌ์ฉ โ ํ๊ทธ ๋ด๋ถ์ ๋ด์ฉ ์ฝ์
const outputDiv = document.getElementById("outputArea");
outputDiv.innerHTML = `
<table>
<tr><th>๐ innerHTML๋ก ์ถ๋ ฅ</th></tr>
<tr><td>HTML ํ๊ทธ ํฌํจํด์ ์ถ๋ ฅ ๊ฐ๋ฅ!</td></tr>
</table>
`;
</script>
<hr>
<h2>๐ ๋ฐ์ดํฐ ์
๋ ฅํ๋ ๋ฐฉ๋ฒ๋ค</h2>
<ul>
<li>๐ข <strong>confirm()</strong> โ ํ์ธ / ์ทจ์ ๋ฒํผ์ผ๋ก true/false ์
๋ ฅ ๋ฐ๊ธฐ</li>
<li>๐ต <strong>prompt()</strong> โ ์ง์ ํ
์คํธ ์
๋ ฅ ๋ฐ๊ธฐ</li>
<li>๐ฃ <strong>HTML ์์ (input, textarea ๋ฑ)</strong> โ ์
๋ ฅ๊ฐ ๊ฐ์ ธ์ค๊ธฐ</li>
</ul>
<!-- confirm, prompt ๊ฒฐ๊ณผ ํ์ํ ๊ณณ -->
<div id="resultArea"></div>
<button onclick="useConfirm()">โ
ํ์ธ์ฐฝ ๋์ฐ๊ธฐ</button>
<button onclick="usePrompt()">โ๏ธ ์ด๋ฆ ์
๋ ฅ๋ฐ๊ธฐ</button>
<hr>
<h3>๐ฅ ์
๋ ฅ ํผ ์์ (์ฌํ)</h3>
<form onsubmit="processForm(event)">
<label>๋์ด ์
๋ ฅ: <input type="number" id="ageInput" required></label>
<input type="submit" value="์ ์ถ">
</form>
<div id="formResult"></div>
<script>
// โ
confirm() ์์ โ true/false ๋ฐํ
function useConfirm() {
let result = confirm("ํ๊ธธ๋๋์ด ๋ง์ต๋๊น?");
// ์ฝ์๋ก๋ ์ถ๋ ฅ
console.log("confirm ๊ฒฐ๊ณผ:", result);
// ํ๋ฉด์๋ ๊ฒฐ๊ณผ ์ถ๋ ฅ
const area = document.getElementById("resultArea");
if (result) {
area.innerHTML = "<h3>๐ ํ์ํฉ๋๋ค, ํ๊ธธ๋๋!</h3>";
} else {
area.innerHTML = "<h3>๐ ๋ค์์ ๋ ๋ง๋์!</h3>";
}
}
// โ๏ธ prompt() ์์ โ ์
๋ ฅ๋ฐ์ ๋ฌธ์์ด ๋ฐํ
function usePrompt() {
let name = prompt("์ด๋ฆ์ ์
๋ ฅํด์ฃผ์ธ์!");
// ๋น ์นธ์ผ๋ก ๋๊ณ ์ทจ์ ๋๋ฅผ ์๋ ์์ผ๋ ์ฒดํฌ
if (name === null || name.trim() === "") {
document.getElementById("resultArea").innerHTML = "<p>โ ์ด๋ฆ์ ์
๋ ฅํ์ง ์์์ต๋๋ค.</p>";
} else {
document.getElementById("resultArea").innerHTML = `<p>๐ ์๋
ํ์ธ์, <strong>${name}</strong>๋!</p>`;
}
}
// ๐ฅ ์
๋ ฅ ํผ ์ฒ๋ฆฌ โ input ์์์์ ๋ฐ์ดํฐ ๊ฐ์ ธ์ค๊ธฐ
function processForm(e) {
e.preventDefault(); // ํผ ์ ์ถ์ ํ์ด์ง ์๋ก๊ณ ์นจ ๋ฐฉ์ง
let age = document.getElementById("ageInput").value;
if (Number(age) >= 20) {
document.getElementById("formResult").innerHTML = "โ
์ฑ์ธ์
๋๋ค!";
} else {
document.getElementById("formResult").innerHTML = "๐ธ ๋ฏธ์ฑ๋
์์
๋๋ค!";
}
}
</script>
</body>
</html>