์‚ฌ์šฉ์ž ๋„๊ตฌ

์‚ฌ์ดํŠธ ๋„๊ตฌ


wiki:glossary:web_technologies:javascript

๐ŸŸจ JavaScript

JavaScript๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰๋˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ, ๋™์ ์ด๊ณ  ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•œ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค.

๐Ÿ“‹ ์ •์˜

JavaScript๋Š” ์›น ๊ฐœ๋ฐœ์„ ์œ„ํ•œ ๊ณ ๊ธ‰ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์ž…๋‹ˆ๋‹ค. ์›๋ž˜๋Š” ์›น ๋ธŒ๋ผ์šฐ์ €์—์„œ๋งŒ ์‹คํ–‰๋˜์—ˆ์ง€๋งŒ, ํ˜„์žฌ๋Š” ์„œ๋ฒ„ ์‚ฌ์ด๋“œ(Node.js)์—์„œ๋„ ์‚ฌ์šฉ๋˜๋ฉฐ, ๋ชจ๋ฐ”์ผ ์•ฑ๊ณผ ๋ฐ์Šคํฌํ†ฑ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ๊ฐœ๋ฐœ์—๋„ ํ™œ์šฉ๋ฉ๋‹ˆ๋‹ค.

๐ŸŽฏ ์ฃผ์š” ํŠน์ง•

1. ๋™์  ํƒ€์ž… ์–ธ์–ด - ๋ณ€์ˆ˜์˜ ํƒ€์ž…์ด ๋Ÿฐํƒ€์ž„์— ๊ฒฐ์ •๋ฉ๋‹ˆ๋‹ค. - ์œ ์—ฐํ•œ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

2. ์ด๋ฒคํŠธ ๊ธฐ๋ฐ˜ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ์‚ฌ์šฉ์ž ์ƒํ˜ธ์ž‘์šฉ์— ๋ฐ˜์‘ํ•˜๋Š” ์ด๋ฒคํŠธ ํ•ธ๋“ค๋Ÿฌ๋ฅผ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. - ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์ด ์ž์—ฐ์Šค๋Ÿฝ์Šต๋‹ˆ๋‹ค.

3. ๊ฐ์ฒด ์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ - ํ”„๋กœํ† ํƒ€์ž… ๊ธฐ๋ฐ˜ ์ƒ์†์„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค. - ES6๋ถ€ํ„ฐ ํด๋ž˜์Šค ๋ฌธ๋ฒ•๋„ ์ง€์›ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ—๏ธ ๊ธฐ๋ณธ ๋ฌธ๋ฒ•

๋ณ€์ˆ˜ ์„ ์–ธ:

// var (๊ตฌ์‹, ์‚ฌ์šฉ ๊ถŒ์žฅํ•˜์ง€ ์•Š์Œ)
var oldWay = "๊ตฌ์‹ ๋ฐฉ๋ฒ•";
 
// let (๋ธ”๋ก ์Šค์ฝ”ํ”„)
let modernWay = "ํ˜„๋Œ€์  ๋ฐฉ๋ฒ•";
 
// const (์ƒ์ˆ˜)
const constantValue = "๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’";

ํ•จ์ˆ˜ ์ •์˜:

// ํ•จ์ˆ˜ ์„ ์–ธ
function traditionalFunction() {
    return "์ „ํ†ต์ ์ธ ํ•จ์ˆ˜";
}
 
// ํ•จ์ˆ˜ ํ‘œํ˜„์‹
const arrowFunction = () => {
    return "ํ™”์‚ดํ‘œ ํ•จ์ˆ˜";
};
 
// ์ฆ‰์‹œ ์‹คํ–‰ ํ•จ์ˆ˜
(function() {
    console.log("์ฆ‰์‹œ ์‹คํ–‰");
})();

๊ฐ์ฒด์™€ ๋ฐฐ์—ด:

// ๊ฐ์ฒด
const person = {
    name: "ํ™๊ธธ๋™",
    age: 30,
    greet() {
        return `์•ˆ๋…•ํ•˜์„ธ์š”, ${this.name}์ž…๋‹ˆ๋‹ค.`;
    }
};
 
// ๋ฐฐ์—ด
const numbers = [1, 2, 3, 4, 5];
const doubled = numbers.map(n => n * 2);

๐ŸŽฎ DOM ์กฐ์ž‘

์š”์†Œ ์„ ํƒ:

// ID๋กœ ์„ ํƒ
const element = document.getElementById('myId');
 
// ํด๋ž˜์Šค๋กœ ์„ ํƒ
const elements = document.getElementsByClassName('myClass');
 
// CSS ์„ ํƒ์ž๋กœ ์„ ํƒ
const element = document.querySelector('.myClass');
const elements = document.querySelectorAll('.myClass');

์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ:

// ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€
element.addEventListener('click', function(event) {
    console.log('ํด๋ฆญ๋จ!');
});
 
// ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์‚ฌ์šฉ
element.addEventListener('mouseover', (event) => {
    element.style.backgroundColor = 'red';
});

DOM ์กฐ์ž‘:

// ์š”์†Œ ์ƒ์„ฑ
const newElement = document.createElement('div');
newElement.textContent = '์ƒˆ๋กœ์šด ์š”์†Œ';
 
// ์š”์†Œ ์ถ”๊ฐ€
document.body.appendChild(newElement);
 
// ์š”์†Œ ์ œ๊ฑฐ
element.remove();
 
// ์†์„ฑ ์„ค์ •
element.setAttribute('class', 'newClass');

๐Ÿ”„ ๋น„๋™๊ธฐ ํ”„๋กœ๊ทธ๋ž˜๋ฐ

์ฝœ๋ฐฑ ํ•จ์ˆ˜:

// ๋น„๋™๊ธฐ ์ž‘์—… ์˜ˆ์ œ
setTimeout(() => {
    console.log('3์ดˆ ํ›„ ์‹คํ–‰');
}, 3000);
 
// AJAX ์š”์ฒญ
fetch('/api/data')
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(error => console.error(error));

Promise:

const myPromise = new Promise((resolve, reject) => {
    // ๋น„๋™๊ธฐ ์ž‘์—…
    setTimeout(() => {
        const success = Math.random() > 0.5;
        if (success) {
            resolve('์„ฑ๊ณต!');
        } else {
            reject('์‹คํŒจ!');
        }
    }, 1000);
});
 
myPromise
    .then(result => console.log(result))
    .catch(error => console.error(error));

async/await:

async function fetchData() {
    try {
        const response = await fetch('/api/data');
        const data = await response.json();
        return data;
    } catch (error) {
        console.error('๋ฐ์ดํ„ฐ ๊ฐ€์ ธ์˜ค๊ธฐ ์‹คํŒจ:', error);
    }
}
 
// ์‚ฌ์šฉ
fetchData().then(data => console.log(data));

๐Ÿ—๏ธ ๋ชจ๋“ˆ ์‹œ์Šคํ…œ

ES6 ๋ชจ๋“ˆ:

// math.js
export const add = (a, b) => a + b;
export const subtract = (a, b) => a - b;
 
export default class Calculator {
    multiply(a, b) {
        return a * b;
    }
}
 
// main.js
import Calculator, { add, subtract } from './math.js';
 
console.log(add(5, 3)); // 8
console.log(subtract(10, 4)); // 6
 
const calc = new Calculator();
console.log(calc.multiply(6, 7)); // 42

CommonJS (Node.js):

// math.js
module.exports = {
    add: (a, b) => a + b,
    subtract: (a, b) => a - b
};
 
// main.js
const math = require('./math.js');
console.log(math.add(5, 3)); // 8

๐ŸŽฏ ES6+ ๊ธฐ๋Šฅ

๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น:

// ๋ฐฐ์—ด ๊ตฌ์กฐ ๋ถ„ํ•ด
const [first, second, ...rest] = [1, 2, 3, 4, 5];
 
// ๊ฐ์ฒด ๊ตฌ์กฐ ๋ถ„ํ•ด
const { name, age, ...otherProps } = person;

ํ…œํ”Œ๋ฆฟ ๋ฆฌํ„ฐ๋Ÿด:

const name = "ํ™๊ธธ๋™";
const greeting = `์•ˆ๋…•ํ•˜์„ธ์š”, ${name}๋‹˜!`;
const multiLine = `
    ์—ฌ๋Ÿฌ ์ค„์˜
    ํ…์ŠคํŠธ๋ฅผ
    ์‰ฝ๊ฒŒ ์ž‘์„ฑํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.
`;

ํด๋ž˜์Šค:

class Animal {
    constructor(name) {
        this.name = name;
    }
 
    speak() {
        return `${this.name}์ด(๊ฐ€) ์†Œ๋ฆฌ๋ฅผ ๋ƒ…๋‹ˆ๋‹ค.`;
    }
}
 
class Dog extends Animal {
    speak() {
        return `${this.name}์ด(๊ฐ€) ๋ฉ๋ฉ ์ง–์Šต๋‹ˆ๋‹ค.`;
    }
}
 
const dog = new Dog('๋ฐ”๋‘‘์ด');
console.log(dog.speak()); // "๋ฐ”๋‘‘์ด๊ฐ€ ๋ฉ๋ฉ ์ง–์Šต๋‹ˆ๋‹ค."

๐Ÿ› ๏ธ ๋””๋ฒ„๊น…

์ฝ˜์†” ๋ฉ”์„œ๋“œ:

console.log('์ผ๋ฐ˜ ๋กœ๊ทธ');
console.error('์—๋Ÿฌ ๋ฉ”์‹œ์ง€');
console.warn('๊ฒฝ๊ณ  ๋ฉ”์‹œ์ง€');
console.info('์ •๋ณด ๋ฉ”์‹œ์ง€');
 
// ๊ฐ์ฒด ์ถœ๋ ฅ
console.table([
    { name: 'ํ™๊ธธ๋™', age: 30 },
    { name: '๊น€์ฒ ์ˆ˜', age: 25 }
]);
 
// ์„ฑ๋Šฅ ์ธก์ •
console.time('์ž‘์—… ์‹œ๊ฐ„');
// ... ์ž‘์—… ์ˆ˜ํ–‰
console.timeEnd('์ž‘์—… ์‹œ๊ฐ„');
</code>
 
**๋ธŒ๋ ˆ์ดํฌํฌ์ธํŠธ:**
<code javascript
function debugFunction() {
    debugger; // ๋ธŒ๋ผ์šฐ์ €์—์„œ ์‹คํ–‰ ์‹œ ์—ฌ๊ธฐ์„œ ๋ฉˆ์ถค
    console.log('๋””๋ฒ„๊น… ์ค‘...');
}

๐Ÿ“š ๊ด€๋ จ ์šฉ์–ด

  • HTML - ๋งˆํฌ์—… ์–ธ์–ด
  • CSS - ์Šคํƒ€์ผ์‹œํŠธ
  • DOM - ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ
  • AJAX - ๋น„๋™๊ธฐ ํ†ต์‹ 
  • JSON - ๋ฐ์ดํ„ฐ ํ˜•์‹
  • Node.js - JavaScript ๋Ÿฐํƒ€์ž„
  • Phaser.js - ๊ฒŒ์ž„ ์—”์ง„
  • Socket.IO - ์‹ค์‹œ๊ฐ„ ํ†ต์‹ 

๐Ÿ”— ๊ด€๋ จ ๋ฌธ์„œ

โ€” ์ด ํŽ˜์ด์ง€๋Š” ์ž๋™์œผ๋กœ ์ƒ์„ฑ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

wiki/glossary/web_technologies/javascript.txt ยท ๋งˆ์ง€๋ง‰์œผ๋กœ ์ˆ˜์ •๋จ: ์ €์ž syjang0803

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki