๐Ÿงก JavaScript

[JS] JavaScript ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ

Genie_. 2025. 4. 27. 19:36
728x90
๋ฐ˜์‘ํ˜•

JavaScript ์†์„ฑ ๋ฐ ๋ฉ”์„œ๋“œ

DOM ์กฐ์ž‘

์š”์†Œ ์„ ํƒ

// ์š”์†Œ ์„ ํƒ
const element = document.getElementById('id');
const elements = document.getElementsByClassName('class');
const elements = document.getElementsByTagName('div');
const element = document.querySelector('.class');
const elements = document.querySelectorAll('div.item');



์š”์†Œ ์†์„ฑ ์กฐ์ž‘

// ์†์„ฑ ๊ฐ€์ ธ์˜ค๊ธฐ
element.getAttribute('src');
element.id;
element.className;
element.classList; // DOMTokenList

// ์†์„ฑ ์„ค์ •
element.setAttribute('alt', '์ด๋ฏธ์ง€ ์„ค๋ช…');
element.id = 'newId';
element.className = 'newClass';
element.classList.add('active');
element.classList.remove('disabled');
element.classList.toggle('visible');
element.classList.contains('hidden');

// ์Šคํƒ€์ผ ์กฐ์ž‘
element.style.color = 'blue';
element.style.fontSize = '16px';



์ฝ˜ํ…์ธ  ์กฐ์ž‘

// ๋‚ด์šฉ ๊ฐ€์ ธ์˜ค๊ธฐ/์„ค์ •
element.textContent; // ํ…์ŠคํŠธ๋งŒ ๋ฐ˜ํ™˜
element.innerText; // ํ‘œ์‹œ๋œ ํ…์ŠคํŠธ๋งŒ ๋ฐ˜ํ™˜
element.innerHTML; // HTML ํฌํ•จํ•˜์—ฌ ๋ฐ˜ํ™˜

element.textContent = '์ƒˆ๋กœ์šด ํ…์ŠคํŠธ';
element.innerHTML = '<span>HTML ๋‚ด์šฉ</span>';

// ์š”์†Œ ์ƒ์„ฑ ๋ฐ ์ถ”๊ฐ€
const newElement = document.createElement('div');
element.appendChild(newElement);
element.insertBefore(newElement, referenceElement);
element.append(newElement, 'ํ…์ŠคํŠธ', otherElement); // ์—ฌ๋Ÿฌ ๋…ธ๋“œ ์ถ”๊ฐ€ ๊ฐ€๋Šฅ
element.prepend(newElement); // ์ฒซ ๋ฒˆ์งธ ์ž์‹์œผ๋กœ ์ถ”๊ฐ€

// ์š”์†Œ ์ œ๊ฑฐ
element.removeChild(childElement);
childElement.remove(); // ์ž๊ธฐ ์ž์‹  ์ œ๊ฑฐ



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

// ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ ์ถ”๊ฐ€
element.addEventListener('click', function(event) {
  console.log('ํด๋ฆญ๋จ!', event.target);
});

// ์ด๋ฒคํŠธ ๊ฐ์ฒด ์†์„ฑ
event.target; // ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•œ ์š”์†Œ
event.currentTarget; // ์ด๋ฒคํŠธ ๋ฆฌ์Šค๋„ˆ๊ฐ€ ์—ฐ๊ฒฐ๋œ ์š”์†Œ
event.preventDefault(); // ๊ธฐ๋ณธ ๋™์ž‘ ๋ฐฉ์ง€
event.stopPropagation(); // ์ด๋ฒคํŠธ ๋ฒ„๋ธ”๋ง ์ค‘๋‹จ

// ์ด๋ฒคํŠธ ์‚ญ์ œ
element.removeEventListener('click', handlerFunction);



๋น„๋™๊ธฐ ์ฒ˜๋ฆฌ

Promise

const promise = new Promise((resolve, reject) => {
  // ๋น„๋™๊ธฐ ์ž‘์—… ์ˆ˜ํ–‰
  if (success) {
    resolve('์„ฑ๊ณต!');
  } else {
    reject('์‹คํŒจ!');
  }
});

promise
  .then(result => console.log(result))
  .catch(error => console.error(error))
  .finally(() => console.log('์™„๋ฃŒ'));



Async/Await

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



Fetch API

fetch('https://api.example.com/data')
  .then(response => {
    if (!response.ok) {
      throw new Error('๋„คํŠธ์›Œํฌ ์‘๋‹ต ์˜ค๋ฅ˜');
    }
    return response.json();
  })
  .then(data => console.log(data))
  .catch(error => console.error('์˜ค๋ฅ˜:', error));



๋ฐฐ์—ด ๋ฉ”์„œ๋“œ

const array = [1, 2, 3, 4, 5];

// ๋ฐ˜๋ณต ๋ฉ”์„œ๋“œ
array.forEach(item => console.log(item));
const doubled = array.map(item => item * 2);
const evenNumbers = array.filter(item => item % 2 === 0);
const sum = array.reduce((acc, curr) => acc + curr, 0);
const hasThree = array.some(item => item === 3);
const allPositive = array.every(item => item > 0);

// ํƒ์ƒ‰ ๋ฉ”์„œ๋“œ
array.find(item => item > 3); // ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ํ•ญ๋ชฉ (4)
array.findIndex(item => item > 3); // ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค (3)
array.indexOf(3); // ๊ฐ’์˜ ์ธ๋ฑ์Šค (2)

// ๋ณ€ํ˜• ๋ฉ”์„œ๋“œ
array.push(6); // ๋์— ์ถ”๊ฐ€
array.pop(); // ๋์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜
array.unshift(0); // ์•ž์— ์ถ”๊ฐ€
array.shift(); // ์•ž์—์„œ ์ œ๊ฑฐํ•˜๊ณ  ๋ฐ˜ํ™˜
array.splice(2, 1, 'a'); // ์ธ๋ฑ์Šค 2์—์„œ 1๊ฐœ ์š”์†Œ ์ œ๊ฑฐํ•˜๊ณ  'a' ์ถ”๊ฐ€
array.slice(1, 3); // ๋ฒ”์œ„์˜ ์š”์†Œ ๋ณต์‚ฌ (์ธ๋ฑ์Šค 1๋ถ€ํ„ฐ 3 ์ „๊นŒ์ง€)
array.concat([6, 7]); // ๋ฐฐ์—ด ๊ฒฐํ•ฉ
array.sort((a, b) => a - b); // ์˜ค๋ฆ„์ฐจ์ˆœ ์ •๋ ฌ
array.reverse(); // ๋ฐฐ์—ด ๋’ค์ง‘๊ธฐ



๊ฐ์ฒด ์กฐ์ž‘

// ๊ฐ์ฒด ์ƒ์„ฑ ๋ฐ ์†์„ฑ ์ ‘๊ทผ
const person = {
  name: 'ํ™๊ธธ๋™',
  age: 30,
  greet() {
    return `์•ˆ๋…•ํ•˜์„ธ์š”, ${this.name}์ž…๋‹ˆ๋‹ค!`;
  }
};

person.name; // ์†์„ฑ ์ ‘๊ทผ
person['age']; // ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•
person.greet(); // ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ

// ๊ฐ์ฒด ๋ฉ”์„œ๋“œ
Object.keys(person); // ['name', 'age', 'greet']
Object.values(person); // ['ํ™๊ธธ๋™', 30, function]
Object.entries(person); // [['name', 'ํ™๊ธธ๋™'], ['age', 30], ['greet', function]]
Object.assign({}, person, { job: '๊ฐœ๋ฐœ์ž' }); // ๊ฐ์ฒด ๋ณ‘ํ•ฉ
Object.freeze(person); // ๊ฐ์ฒด ๋™๊ฒฐ (๋ณ€๊ฒฝ ๋ถˆ๊ฐ€)
Object.seal(person); // ๊ฐ์ฒด ๋ฐ€๋ด‰ (๊ธฐ์กด ์†์„ฑ๋งŒ ์ˆ˜์ • ๊ฐ€๋Šฅ)

// ES6+ ๋ฌธ๋ฒ•
const { name, age } = person; // ๊ตฌ์กฐ ๋ถ„ํ•ด ํ• ๋‹น
const newPerson = { ...person, job: '๊ฐœ๋ฐœ์ž' }; // ์Šคํ”„๋ ˆ๋“œ ์—ฐ์‚ฐ์ž

// ์†์„ฑ ์กด์žฌ ํ™•์ธ
'name' in person; // true
person.hasOwnProperty('age'); // true



๋ฌธ์ž์—ด ๋ฉ”์„œ๋“œ

const str = 'Hello, World!';

// ๊ธฐ๋ณธ ๋ฉ”์„œ๋“œ
str.length; // 13
str.indexOf('World'); // 7
str.lastIndexOf('o'); // 8
str.includes('Hello'); // true
str.startsWith('Hell'); // true
str.endsWith('!'); // true

// ๋ณ€ํ™˜ ๋ฉ”์„œ๋“œ
str.toUpperCase(); // 'HELLO, WORLD!'
str.toLowerCase(); // 'hello, world!'
str.trim(); // ์•ž๋’ค ๊ณต๋ฐฑ ์ œ๊ฑฐ
str.replace('World', 'JavaScript'); // 'Hello, JavaScript!'
str.split(', '); // ['Hello', 'World!']

// ์ถ”์ถœ ๋ฉ”์„œ๋“œ
str.charAt(1); // 'e'
str.substring(7, 12); // 'World'
str.slice(-6, -1); // 'World'



๋‚ ์งœ ๋ฐ ์‹œ๊ฐ„

const now = new Date();

// ๋‚ ์งœ ๊ฐ€์ ธ์˜ค๊ธฐ
now.getFullYear(); // ์—ฐ๋„ (2025)
now.getMonth(); // ์›” (0-11)
now.getDate(); // ์ผ (1-31)
now.getDay(); // ์š”์ผ (0-6, 0์€ ์ผ์š”์ผ)

// ์‹œ๊ฐ„ ๊ฐ€์ ธ์˜ค๊ธฐ
now.getHours(); // ์‹œ๊ฐ„ (0-23)
now.getMinutes(); // ๋ถ„ (0-59)
now.getSeconds(); // ์ดˆ (0-59)
now.getMilliseconds(); // ๋ฐ€๋ฆฌ์ดˆ (0-999)

// ํƒ€์ž„์Šคํƒฌํ”„
now.getTime(); // 1970๋…„ 1์›” 1์ผ๋ถ€ํ„ฐ์˜ ๋ฐ€๋ฆฌ์ดˆ
Date.now(); // ํ˜„์žฌ ์‹œ๊ฐ„์˜ ํƒ€์ž„์Šคํƒฌํ”„

// ๋‚ ์งœ ์„ค์ •
now.setFullYear(2026);
now.setMonth(0); // 1์›” (0)
now.setDate(15);

<br/>
// ๋‚ ์งœ ํ˜•์‹ํ™”
now.toDateString(); // 'Sun Apr 27 2025'
now.toTimeString(); // '12:34:56 GMT+0900 (ํ•œ๊ตญ ํ‘œ์ค€์‹œ)'
now.toLocaleDateString('ko-KR'); // '2025. 4. 27.'
now.toLocaleTimeString('ko-KR'); // '์˜คํ›„ 12:34:56'
now.toISOString(); // '2025-04-27T03:34:56.789Z'



์ •๊ทœ ํ‘œํ˜„์‹

// ์ •๊ทœ์‹ ์ƒ์„ฑ
const regex1 = /pattern/flags;
const regex2 = new RegExp('pattern', 'flags');

<br/>

// ์ฃผ์š” ํ”Œ๋ž˜๊ทธ
// g: ์ „์—ญ ๊ฒ€์ƒ‰
// i: ๋Œ€์†Œ๋ฌธ์ž ๊ตฌ๋ถ„ ์—†์Œ
// m: ๋‹ค์ค‘ ํ–‰ ๋ชจ๋“œ
// s: .์ด ๊ฐœํ–‰ ๋ฌธ์ž์™€ ์ผ์น˜ํ•˜๋„๋ก ํ—ˆ์šฉ

<br/>

// ๋ฉ”์„œ๋“œ
const str = 'Hello, World!';
regex.test(str); // ๋ฌธ์ž์—ด์— ํŒจํ„ด์ด ์žˆ๋Š”์ง€ ํ™•์ธ (true/false)
regex.exec(str); // ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ํ•ญ๋ชฉ ์ •๋ณด ๋ฐ˜ํ™˜ (๋ฐฐ์—ด)
str.match(regex); // ์ผ์น˜ํ•˜๋Š” ๋ชจ๋“  ๋ฌธ์ž์—ด ๋ฐฐ์—ด๋กœ ๋ฐ˜ํ™˜
str.matchAll(regex); // ๋ชจ๋“  ์ผ์น˜ ํ•ญ๋ชฉ ์ •๋ณด ๋ฐ˜ํ™˜ (์ดํ„ฐ๋ ˆ์ดํ„ฐ)
str.search(regex); // ์ฒซ ๋ฒˆ์งธ ์ผ์น˜ ํ•ญ๋ชฉ์˜ ์ธ๋ฑ์Šค ๋ฐ˜ํ™˜
str.replace(regex, replacement); // ์ผ์น˜ ํ•ญ๋ชฉ ๊ต์ฒด
str.split(regex); // ์ผ์น˜ ํ•ญ๋ชฉ์„ ๊ธฐ์ค€์œผ๋กœ ๋ถ„ํ• 

<br/>

// ์˜ˆ์‹œ
const emailRegex = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/;
emailRegex.test('user@example.com'); // true
728x90
๋ฐ˜์‘ํ˜•