๐งก 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
๋ฐ์ํ