๊ด€๋ฆฌ ๋ฉ”๋‰ด

JiYoung Dev ๐Ÿ–ฅ

JavaScript ๊ฐœ์š” & ์ž…์ถœ๋ ฅ (2023.04.24) ๋ณธ๋ฌธ

full stack/JavaScript

JavaScript ๊ฐœ์š” & ์ž…์ถœ๋ ฅ (2023.04.24)

Shinjio 2023. 4. 24. 19:50

๐ŸŽˆ JavaScript๋ž€?

์›น ํŽ˜์ด์ง€๋ฅผ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ ์œผ๋กœ ์ œ์–ดํ•˜๊ธฐ ์œ„ํ•ด์„œ ๊ฐœ๋ฐœ๋œ ์–ธ์–ด

๊ฐ์ฒด(object) ๊ธฐ๋ฐ˜์˜ ์Šคํฌ๋ฆฝํŠธ ์–ธ์–ด

HTML๋กœ๋Š” ์›น์˜ ๋‚ด์šฉ์„ ์ž‘์„ฑํ•˜๊ณ , CSS๋กœ๋Š” ์›น์„ ๋””์ž์ธํ•˜๋ฉฐ, ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ๋Š” ์›น์˜ ๋™์ž‘์„ ๊ตฌํ˜„

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ฃผ๋กœ ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‚ฌ์šฉ๋˜๋‚˜, Node.js์™€ ๊ฐ™์€ ํ”„๋ ˆ์ž„์›Œํฌ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์„œ๋ฒ„์ธก ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋„ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ    

 

๐ŸŽˆ ECMAScript (ES1, 2,... )

ํ‘œ์ค€ํ™”๋œ ์Šคํฌ๋ฆฝํŠธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ํ‘œ์ค€ํ™”ํ•˜๊ธฐ ์œ„ํ•ด ๋งŒ๋“ค์–ด์ง

๋ธŒ๋ผ์šฐ์ €์—์„œ ๋™์ž‘ํ•˜๋Š” ์–ธ์–ด๋ฅผ ๋งŒ๋“ค ๋•Œ ๋ฌธ๋ฒ•์ ์ธ ์‚ฌํ•ญ๋“ค์„ ์ •๋ฆฌํ•œ ๋ฌธ์„œ

 

๐ŸŽˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑ ๋ฐฉ์‹

์›น ๋ธŒ๋ผ์šฐ์ €์—๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋ฅผ ์ฝ๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ํ•ด์„๊ธฐ(JavaScript Interpreter)๊ฐ€ ์žˆ์Œ. 

๋”ฐ๋ผ์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋Š” ์›น ๋ฌธ์„œ์—์„œ <script> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Œ

๋˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋งŒ ๋ณ„๋„ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์ž‘์„ฑํ•œ ํ›„ ์›น ๋ฌธ์„œ์™€ ์—ฐ๊ฒฐํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

 

๐Ÿ“– ์›น ๋ฌธ์„œ ์•ˆ์— <script> ํƒœ๊ทธ๋กœ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ

body ๋๋ถ€๋ถ„์— ์ž‘์„ฑ (</body> ์œ„์ชฝ์— ์ž‘์„ฑ) 

์™œ? ์‚ฌ์šฉ์ž์—๊ฒŒ ํ™”๋ฉด์„ ๋ณด์—ฌ์ฃผ๊ณ  ๋‚˜์„œ ๊ธฐ๋Šฅ์„ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ๋„๋ก (์†๋„)

 

ํ•˜์ง€๋งŒ ์ด๋ ‡๊ฒŒ ์ž‘์„ฑํ•  ๊ฒฝ์šฐ, โ‘  HTML ํƒœ๊ทธ์™€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๊ฐ€ ํ•จ๊ป˜ ์„ž์—ฌ ์žˆ์–ด์„œ ์›น ๋ฌธ์„œ๊ฐ€ ๋ณต์žกํ•ด ๋ณด์—ฌ ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ํ•„์š”ํ•œ ์ฝ”๋“œ๋ฅผ ์ฐพ์•„๋ณด๊ธฐ ์–ด๋ ต๊ณ  โ‘ก ์—ฌ๋Ÿฌ ์›น ๋ฌธ์„œ์—์„œ ๊ฐ™์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋ฅผ ์ˆ˜์ •ํ•  ๋•Œ ๋˜‘๊ฐ™์€ ์†Œ์Šค๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์‚ฝ์ž…ํ•ด์•ผ ํ•œ๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ์Œ

 

๋”ฐ๋ผ์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์ €์žฅํ•ด์„œ ์›น ๋ฌธ์„œ์™€ ์—ฐ๊ฒฐํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋งŽ์ด ์‚ฌ์šฉ

 

โš™๏ธ ์‹ค์Šต์ฝ”๋“œ

๋ฒ„ํŠผ์„ ํด๋ฆญํ•˜๋ฉด ๋ฐฐ๊ฒฝ์ƒ‰๊ณผ ๊ธ€์ž์ƒ‰์ด ๋ฐ”๋€Œ๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ html ํŒŒ์ผ ๋‚ด ์ž‘์„ฑํ•˜๊ธฐ

 

 

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>JS start</title>
</head>
<body id="bodyTag">

    <a href="#">์•ˆ๋…•ํ•˜์„ธ์š”!</a>
    <br>
    <br>
    <button id="btn1">Design Change!๐Ÿ’–</button>
    <button id="btn2">Revertโœจ</button>

    <ul>
        <li>HTML</li>
        <li>CSS</li>
        <li>Javascript</li>
    </ul>
    <h1>์˜ค๋Š˜์€ 4์›” 24์ผ!</h1>
    <p>Javascript Start!๐Ÿƒ</p>
    
    <script>
        // getElementById('์•„์ด๋””๊ฐ’') : id๋ฅผ ํ†ตํ•ด์„œ ์š”์†Œ๋ฅผ ๊ฐ€์ง€๊ณ  ์˜ค๋Š” ๋ฉ”์„œ๋“œ
        // addEventListener('์ด๋ฒคํŠธํƒ€์ž…' , '์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ') : ์ด๋ฒคํŠธ๋ฅผ ๋‹ฌ์•„์ฃผ๋Š” ๋ฉ”์„œ๋“œ
        document.getElementById('btn1').addEventListener('click', ()=>{
            document.getElementById('bodyTag').style.backgroundColor="black";
            document.getElementById('bodyTag').style.color="white";
        })

        document.getElementById('btn2').addEventListener('click', ()=>{
            document.getElementById('bodyTag').style.backgroundColor="white";
            document.getElementById('bodyTag').style.color="black";
        })
    </script>
</body>
</html>

 

๐Ÿ“– ์™ธ๋ถ€ ์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ๋กœ ์—ฐ๊ฒฐํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ž‘์„ฑํ•˜๊ธฐ

 ์™ธ๋ถ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์€ <script> ํƒœ๊ทธ ์—†์ด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์†Œ์Šค๋งŒ ์ž‘์„ฑํ•˜๊ณ  ํ™•์žฅ์ž๋Š” .js ํŒŒ์ผ๋กœ ์ €์žฅ

๊ทธ๋ฆฌ๊ณ  HTML ๋ฌธ์„œ์—์„œ <script> ํƒœ๊ทธ์˜ src ์†์„ฑ์„ ์ด์šฉํ•ด์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ ์—ฐ๊ฒฐ

 

<script src="์™ธ๋ถ€์Šคํฌ๋ฆฝํŠธํŒŒ์ผ๊ฒฝ๋กœ"></script>

 

๐ŸŽˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ถœ๋ ฅ

๐Ÿ“– HTML ๋ฌธ์„œ ๋‚ด์— ์ถœ๋ ฅ

 

 

document.write("HTML ๋ฌธ์„œ ๋‚ด์— ์ถœ๋ ฅ");
document.write("<h3>ํƒœ๊ทธ๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜๋„ ์žˆ๋‹ค!</h3>")

 

๐Ÿ“– console์ฐฝ์— ์ถœ๋ ฅ

 

console.log("์ฝ˜์†”์ฐฝ์— ์ถœ๋ ฅ");
console.error('์œ„ํ—˜');
console.warn('๊ฒฝ๊ณ ');
console.info('์ •๋ณด');

error : ์ฝ”๋“œ ์—๋Ÿฌ

warn : ์ง€๊ธˆ ๋‹น์žฅ์€ ๋ฌธ์ œ๊ฐ€ ๋˜์ง€ ์•Š์ง€๋งŒ ๋‚˜์ค‘์— ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ์˜๋ฏธ

 

๐Ÿ“– ์•Œ๋ฆผ ํŒ์—…์ฐฝ์œผ๋กœ ์ถœ๋ ฅ

 

 

alert('์•Œ๋ฆผ ํŒ์—…์ฐฝ์— ์ถœ๋ ฅ');

 

๐ŸŽˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ž…๋ ฅ

๐Ÿ“– ์ž…๋ ฅ์ฐฝ์„ ํ†ตํ•œ ์ž…๋ ฅ

๐Ÿ“– ํ™•์ธ๊ณผ ์ทจ์†Œ๋ฅผ ํ†ตํ•œ ์ž…๋ ฅ

 

// 1. ์ž…๋ ฅ์ฐฝ์„ ํ†ตํ•œ ์ž…๋ ฅ
// ์†Œ๊ด„ํ˜ธ ์•ˆ '์ถœ๋ ฅ์งˆ๋ฌธ', '์ž…๋ ฅ์ฐฝ์— ์ถœ๋ ฅํ•  ๊ธฐ๋ณธ๊ฐ’' ----> '์ž…๋ ฅ์ฐฝ์— ์ถœ๋ ฅํ•  ๊ธฐ๋ณธ๊ฐ’'์€ ์ƒ๋žต ๊ฐ€๋Šฅ!
// ๋ฆฌํ„ดํƒ€์ž… : String
let dinner = prompt("์˜ค๋Š˜ ์ €๋… ๋ญ ๋จน์„๋ž˜?","ํ”ผ์ž");
console.log(dinner);

// 2. ํ™•์ธ ๋ฐ ์ทจ์†Œ๋ฅผ ํ†ตํ•œ ์ž…๋ ฅ
// ๋ฆฌํ„ดํƒ€์ž… : boolean
let coffee = confirm("์ปคํ”ผ๋„ ๋งˆ์‹ค๋ž˜?");
console.log(coffee);

 

 

 

 

๐ŸŽˆ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ ์ž‘์„ฑ์‹œ ์ฃผ์˜์‚ฌํ•ญ

 

1. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ถ„ํ•œ๋‹ค

2. ์ฝ”๋“œ ํ•œ ์ค„์„ ์ž‘์„ฑํ•œ ํ›„์—๋Š” ์„ธ๋ฏธ์ฝœ๋ก (;)์„ ์“ด๋‹ค. 

์„ธ๋ฏธ์ฝœ๋ก ์„ ๋ถ™์ด์ง€ ์•Š์•„๋„ ์‹คํ–‰์ด ๊ฐ€๋Šฅํ•˜์ง€๋งŒ ๋ฌธ์žฅ์„ ๋ช…ํ™•ํ•˜๊ฒŒ ํ‘œ์‹œํ•ด ์ฃผ๋ฉด ์†Œ์Šค๋ฅผ ๋””๋ฒ„๊น…ํ•˜๊ธฐ ์‰ฌ์›€ 

3. ํฐ ๋”ฐ์˜ดํ‘œ์™€ ์ž‘์€๋”ฐ์˜ดํ‘œ์˜ ๊ฒน์นจ ์˜ค๋ฅ˜๋ฅผ ์ฃผ์˜ํ•œ๋‹ค.

ํฐ ๋”ฐ์˜ดํ‘œ, ์ž‘์€ ๋”ฐ์˜ดํ‘œ ๋ชจ๋‘ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•˜๋‚˜ ํ˜ผ์šฉํ•ด์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†์Œ 
'I'm fine.' (์˜ค๋ฅ˜)

"I'm fine." (์˜ค๋ฅ˜ X)