Backend
home

2024. 6. 19 - JavaScript

JavaScript

ํ•จ์ˆ˜

โ€ข
ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ - function ํ‚ค์›Œ๋“œ ์ƒ๋žต
โ—ฆ
ํ™€์ˆ˜ ํŒ๋‹จ
function getValue(value) { return value % 2 }
JavaScript
๋ณต์‚ฌ
โ—ฆ
์ฝœ๋ฐฑ ํ•จ์ˆ˜๋ฅผ ๋งค๊ฐœ๋ณ€์ˆ˜์— ๋„ฃ์–ด์ค„ ๋•Œ - ๊ฐ€๋…์„ฑ ์ข‹์Œ
const fn = (value) => { return value % 2 == 1 }
JavaScript
๋ณต์‚ฌ
โ€ข
eval() - ์‚ฌ์šฉ๋นˆ๋„ ๋‚ฎ์Œ
let codeRun = ` var num11 = 1111; alert(num11) ` eval(codeRun)
JavaScript
๋ณต์‚ฌ

๊ฐ์ฒด

โ€ข
๊ฐ์ฒด (object) โ‡’ ์†์„ฑ + ๋ฉ”์„œ๋“œ
โ—ฆ
๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํŠน์ง•์„ ์†์„ฑ์ด๋ผ๊ณ  ํ•œ๋‹ค.
โ—ฆ
๊ฐ์ฒด๋Š” ๊ธฐ๋Šฅ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค.
โ–ช
ex) ์Šค๋งˆํŠธํฐ
โ€ข
๊ธฐ๋Šฅ: ์ „ํ™”๊ฑธ๊ธฐ ๋ฐ ๋ฐ›๊ธฐ, ์ปดํ“จํŒ…
โ—ฆ
๊ฐ์ฒด๋Š” ๋ฌถ์Œ์ด๋‹ค โ‡’ ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜์˜ ๋ฌถ์Œ
โ—ฆ
์ œ๊ณตํ•˜๋Š” ๊ฐ์ฒด โ‡’ ๋ณ€์ˆ˜ / ๋ฉ”์„œ๋“œ(ํ•จ์ˆ˜)
โ—ฆ
๋ฉ”๋ชจ๋ฆฌ์— ์˜ฌ๋ ค์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ƒํƒœ๋ฅผ ๊ฐ์ฒด๋ผ๊ณ  ํ•œ๋‹ค.
โ—ฆ
์ตœ๊ทผ react๋Š” ํ•จ์ˆ˜ ๊ธฐ๋ฐ˜์œผ๋กœ ๋งŒ๋“ฆ
โ—ฆ
๊ฐ์ฒด๊ฐ€ ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ํ•จ์ˆ˜ โ‡’ ๋ฉ”์„œ๋“œ
โ—ฆ
๊ฐ์ฒด ํ‘œํ˜„ โ‡’ {} object
โ€ข
๊ฐ์ฒด ํ‘œํ˜„ ์˜ˆ์‹œ
const menu1 = { productName: 'Americano', // ์†์„ฑ์ด๋ฆ„ : ์†์„ฑ๊ฐ’ price: 3000, ctgy: 'Coffee' } console.log('menu1 > ', menu1)
JavaScript
๋ณต์‚ฌ
โ€ข
๋ฐฐ์—ด โ†’ arr[index]
console.log('์ œํ’ˆ ์ด๋ฆ„ >> ', menu1['productName']) console.log('์ œํ’ˆ ์ด๋ฆ„ >> ', menu1.productName)
JavaScript
๋ณต์‚ฌ
โ€ข
๊ฐ์ฒด์˜ ์†์„ฑ์€ ๋ณ€์ˆ˜์™€ ๊ฐ™์ด ๋ชจ๋“  ํƒ€์ž…์˜ ์ž๋ฃŒํ˜•์„ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค.
const menu2 = { productName: 'Americano', // ์†์„ฑ์ด๋ฆ„ : ์†์„ฑ๊ฐ’ price: 3000, ctgy: 'Coffee', makeCoffee : () => { // ๋ฉ”์„œ๋“œ console.log('์›๋‘ 20g๊ณผ ๋œจ๊ฑฐ์šด ๋ฌผ 120ml ์„ž์–ด์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค.') } }
JavaScript
๋ณต์‚ฌ
โ€ข
๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ
// ๊ฐ์ฒด์˜ ๋ฉ”์„œ๋“œ ํ˜ธ์ถœ menu2.makeCoffee()
JavaScript
๋ณต์‚ฌ
โ€ข
this: ๊ฐ์ฒด ์ž์‹ ์˜ ๋ฉค๋ฒ„ ์ฐธ์กฐ, ํ˜„์žฌ๊ฐ์ฒด ์ž์‹ ์„ ๊ฐ€๋ฆฌํ‚ด
โ—ฆ
ํ™”์‚ดํ‘œ ํ•จ์ˆ˜ ์—์„œ๋Š” this ์ง€์› ์•ˆ ๋จ
const menu3 = { productName: 'Americano', // ์†์„ฑ์ด๋ฆ„ : ์†์„ฑ๊ฐ’ price: 3000, ctgy: 'Coffee', makeCoffee: function() { // ๋ฉ”์„œ๋“œ console.log(`${this.productName}๋Š” 20g๊ณผ ๋œจ๊ฑฐ์šด ๋ฌผ 120ml ์„ž์–ด์„œ ๋งŒ๋“ญ๋‹ˆ๋‹ค.`) } }
JavaScript
๋ณต์‚ฌ
โ€ข
๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€
// ๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋™์ ์œผ๋กœ ์ถ”๊ฐ€ menu3.event = false console.log(menu3) if (menu1.event) { alert('์ด๋ฒคํŠธ ์ƒํ’ˆ์ž…๋‹ˆ๋‹ค.') } else { alert('์ด๋ฒคํŠธ ๋ฏธ ๋Œ€์ƒ ์ƒํ’ˆ!') }
JavaScript
๋ณต์‚ฌ
โ€ข
๊ธฐ๋ณธ ์ž๋ฃŒํ–‰ ๊ฐ์ฒด ์„ ์–ธ : ์ˆซ์ž, ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฌ์–ธ ๊ทธ๋ฆฌ๊ณ  ๋ฐฐ์—ด
let obj_string = new String(' ์•ˆ๋…•ํ•˜์„ธ์š” ') console.log(obj_string, obj_string.length) console.log(obj_string.trim(), obj_string.trim().length) let obj_phoneNumber = new String('010-9999-7777') console.log(obj_phoneNumber.split('-')) console.log(obj_phoneNumber.replace('-', '.')) const obj_num = new Number(100.123456) console.log(obj_num, obj_num.toString()) // ์ž๋ฆฟ์ˆ˜ ํ‘œํ˜„ console.log(obj_num.toFixed(2)) // isNaN() => NaN ํŒ๋‹จ, isFinite() => ๋ฌดํ•œ๋Œ€ ์ˆ˜ ํŒ๋ณ„ let priNum = 1000 console.log(priNum.toString()) // ๋ฐฐ์—ด let arr1 = [1, 2, 3, 4, 5] console.log(arr1) let arr2 = new Array() console.log(arr2) let arr3 = new Array(10) console.log(arr3) let arr4 = new Array(1, 2, 3, 4, 5) console.log(arr4)
JavaScript
๋ณต์‚ฌ
โ€ข
JSON
โ—ฆ
JSON ํ™œ์šฉ ์˜ˆ์‹œ
// JSON : JSON ํƒ€์ž…์˜ ํ˜•์‹ ๋ณ€ํ™˜ // object => JSON, JSON => object // Data => ๊ทœ๊ฒฉํ™” let menu = { productName : 'americano', price : 3000, ctgy : 'coffee' } console.log(menu, typeof(menu)) let json_string = JSON.stringify(menu) console.log(json_string) console.log(typeof(json_string)) // JSON => Object let obj_json = JSON.parse(json_string) console.log(obj_json) let menus = [ {name : '์•„๋ฉ”๋ฆฌ์นด๋…ธ', price : 3000}, {name : '๋ธ”๋ž™ ํ‹ฐ', price : 4000}, {name : '๋ฐ€ํฌ', price : 5000} ] let menus_json = JSON.stringify(menus) console.log(menus_json) console.log(JSON.parse(menus_json))
JavaScript
๋ณต์‚ฌ
โ—ฆ
JSON ๋ฐ์ดํ„ฐ ์–‘์‹
[ { "name": "์•„๋ฉ”๋ฆฌ์นด๋…ธ", "price": 3000 }, { "name": "๋ธ”๋ž™ ํ‹ฐ", "price": 4000 }, { "name": "๋ฐ€ํฌ", "price": 5000 } ]
JavaScript
๋ณต์‚ฌ
โ€ข
๋ฌธ์„œ๊ฐ์ฒด ๋ชจ๋ธ(DOM)
โ—ฆ
<div>test</div> โ‡’ object
โ—ฆ
์ƒˆ๋กœ์šด ๋ธŒ๋ผ์šฐ์ € window ์ƒ์„ฑ, feature ์†์„ฑ ์ง€์ •ํ•˜๋ฉด ์ƒˆ ์ฐฝ์ด ๋œฌ๋‹ค.
window.open('https://www.naver.com', 'newWin', 'width=300, height=400')
JavaScript
๋ณต์‚ฌ
โ€ข
๋ธŒ๋ผ์šฐ์ € ๊ฐ์ฒด ๋ชจ๋ธ
โ—ฆ
window, location, navigator, history, screen, document
// ๋ธŒ๋ผ์šฐ์ € ์ฃผ์†Œ์ฐฝ console.log('check >>', location.href) function gotoNaver() { location.href = 'https://www.naver.com' } window.onload = function(){ console.log('onload : ํŽ˜์ด์ง€ ๋กœ๋“œ ์™„๋ฃŒ') }
JavaScript
๋ณต์‚ฌ
โ—ฆ
์ด๋ฒคํŠธ ์—ฐ๊ฒฐ
document.addEventListener('DOMContentLoaded', function(){ console.log('๋ฌธ์„œ๊ฐ์ฒด๋ฅผ ๋ชจ๋‘ ์ฝ๊ณ  ๋‚˜๋ฉด ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ณ  ์ฝœ๋ฐฑํ•จ์ˆ˜๋ฅผ ์‹คํ–‰') let h1_el = document.getElementById('h1') console.log(h1_el.innerHTML) })
JavaScript
๋ณต์‚ฌ
โ—ฆ
์บ์ŠคํŒ… : ๋ฌธ์„œ๊ฐ์ฒด ์ƒ์„ฑ
// querySelector : css ์„ ํƒ์ž๋ฅผ ์ด์šฉํ•ด์„œ ์บ์ŠคํŒ… const div_el = document.querySelector('div')' // ํ…์ŠคํŠธ ๋ณ€๊ฒฝ, ์ปฌ๋Ÿฌ, padding, margin, font-size div_el.textContent = 'HEADER' div_el.style.backgroundColor = 'yellow' // ๋ฐฑ๊ทธ๋ผ์šด๋“œ ์ƒ‰์ƒ ๋ณ€๊ฒฝ๋จ css๋Š” background-color๋กœ ํ‘œ๊ธฐ๋จ div_el.style.color = 'blue' div_el.style.padding = '20px' div_el.style.fontSize = '32px'
JavaScript
๋ณต์‚ฌ
โ—ฆ
์—ฌ๋Ÿฌ๊ฐœ์˜ ์—˜๋ฆฌ๋จผํŠธ ์บ์ŠคํŒ…
const h3s = document.querySelectorAll('h3') console.log(h3s) h3s.forEach((item, index) => { // item.textContent += index item.innerHTML = item.innerHTML + ` <i>${index}</i>` item.style.color = 'red' })
JavaScript
๋ณต์‚ฌ
โ—ฆ
์†์„ฑ ์ปจํŠธ๋กค
const a_el = document.querySelector('a') let href_str = a_el.getAttribute('href') console.log('href >>', href_str) a_el.setAttribute('href', 'https://github.com') console.log(a_el) <body> <!-- <a href="https://www.naver.com">naver</a> --> <h3>header - 3</h3> <h3>header - 3</h3> <h3>header - 3</h3> <h1 id="h1" onclick="gotoNaver()"><span>ํŽ˜์ด์ง€ ์ด๋™</span></h1> <div><span>test</span></div> </body>
JavaScript
๋ณต์‚ฌ
โ€ข
๋™์ ์œผ๋กœ ํƒœ๊ทธ ์ƒ์„ฑ
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js_dom3</title> <script> // load document.addEventListener('DOMContentLoaded', () => { // 1. ํƒ€๊นƒ(์ƒˆ๋กญ๊ฒŒ ์œ„์น˜ํ•  ์œ„์น˜) ์—˜๋ฆฌ๋จผํŠธ const wrap = document.querySelector('#wrap') // 2. ์ƒˆ๋กœ์šด ์—˜๋ฆฌ๋จผํŠธ ๊ฐ์ฒด ์ƒ์„ฑ const newEl = document.createElement('h2'); // ์†์„ฑ, ์Šคํƒ€์ผ.. newEl.textContent = '๋™์ ์œผ๋กœ ์ƒ์„ฑํ•œ h2 tag' newEl.style.textAlign = 'center' newEl.style.color = 'blue' newEl.style.backgroundColor = 'yellow' // 3. ํƒ€๊นƒ์— ์ƒˆ๋กœ์šด ์—˜๋ฆฌ๋จผํŠธ ์ถ”๊ฐ€ wrap.appendChild(newEl) // ์ด๋ฏธ์ง€ ํƒœ๊ทธ ์ƒ์„ฑ const newImg = document.createElement('img') newImg.setAttribute('src', '/image/bonobono.jpg') wrap.appendChild(newImg) }) </script> </head> <body> <!-- <h3>title</h3> <div id="wrap"></div> --> <h3>Menu</h3> <div id="wrap"></div> </body> </html>
JavaScript
๋ณต์‚ฌ
โ€ข
div > h3(์ƒํ’ˆ๋ช…) > p(๊ฐ€๊ฒฉ)
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>js_dom3</title> <style> #wrap { display: flex; } .box { border: 1px solid #aaa; width: 150px; height: 150px; } </style> <script> let menus = [ {name: '์•„๋ฉ”๋ฆฌ์นด๋…ธ', price: 3000}, {name: '์•„๋ฉ”๋ฆฌ์นด๋…ธ', price: 3000}, {name: '์•„๋ฉ”๋ฆฌ์นด๋…ธ', price: 3000}, {name: '์•„๋ฉ”๋ฆฌ์นด๋…ธ', price: 3000}, {name: '์•„๋ฉ”๋ฆฌ์นด๋…ธ', price: 3000}, {name: '๋ธ”๋ž™ ํ‹ฐ', price: 4000}, {name: '๋ฐ€ํฌ', price: 5000} ] // load document.addEventListener('DOMContentLoaded', () => { // menus ๋ฐ˜๋ณต ํ•ด์„œ appendChild menus.forEach((item, index) => { // div > h3(์ƒํ’ˆ๋ช…) > p(๊ฐ€๊ฒฉ) const newDiv = document.createElement('div') newDiv.setAttribute('class', 'box') const newh3 = document.createElement('h3') newh3.textContent = item.name newDiv.appendChild(newh3) const newp = document.createElement('p') newp.textContent = `${item.price} ์›` newDiv.appendChild(newp) wrap.appendChild(newDiv) }) }) </script> </head> <body> <h3>Menu</h3> <div id="wrap"></div> </body> </html>
JavaScript
๋ณต์‚ฌ

๊ธฐํƒ€