๐จ JavaScript
[์ฝ๋ฉ์ ํ] Local Storage ์ฌ์ฉ๋ฒ (Session Storage, IndexedDB, Cookies, Cache Storage)
๋ธ๋ผ์ฐ์ ์์ ์ ์ ๋ชฐ๋ ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค. F12 ๊ฐ๋ฐ์ ๋๊ตฌ์์ Application(์ ํ๋ฆฌ์ผ์ด์ ) > Storage(์ ์ฅ์ฉ๋) ์นดํ ๊ณ ๋ฆฌ๋ฅผ ๋ณด์. 1. Local Storage key : value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค. 5MB ์ดํ์ ๋ฌธ์/์ซ์ ๋ฐ์ดํฐ๋ง ์ ์ฅํ ์ ์๋ค. (array, object ์ ์ฅ ๋ถ๊ฐ๋ฅ) ์ฌ์ดํธ๋ฅผ ์ฌ์ ์ํด๋ ์ ์ง๋๋ค. 2. Session Storage key : value ํํ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ ์ ์๋ค. 5MB ์ดํ์ ๋ฌธ์/์ซ์ ๋ฐ์ดํฐ๋ง ์ ์ฅํ ์ ์๋ค. (array, object ์ ์ฅ ๋ถ๊ฐ๋ฅ) ์ฌ์ดํธ๋ฅผ ๋๊ฐ๋ฉด ์ญ์ ๋๋ค. 3. IndexedDB ๊ตฌ์กฐํ๋ ๋์ฉ๋๋ฐ์ดํฐ๋ฅผ ์ ์ฅํ๋ค. 3. Cookies ์ ์ ์ ์ธ์ฆ์ ๋ณด(๋ก๊ทธ์ธ์ ๋ณด ๋ฑ)๋ฅผ ์ ์ฅํ๋ค. 4. Cache..
Level 3 : 5~8 (ajax, json, array, sort)
5. ์นด๋๋ ์ด์์์ ๋ฐ์ดํฐ๋ฅผ ๋ถ๋ฌ์ ์นด๋ 3๊ฐ ์์ฑํ๊ธฐ ์์์๋ฐ์คํฌ๋ฆฝํธ๋ฒ์ let cardWrap = document.querySelector('.row'); let products = [ { id : 0, price : 70000, title : 'Blossom Dress' }, { id : 1, price : 50000, title : 'Springfield Shirt' }, { id : 2, price : 60000, title : 'Black Monastery' } ]; products.forEach(function(a, i){ let card = ` ${products[i]['title']} ${products[i]['price']} ` cardWrap.insertAdjacentHTML('bef..
[์ฝ๋ฉ์ ํ] ajax๋ก ์๋ฒ์ ๋ฐ์ดํฐ ์ฃผ๊ณ ๋ฐ๊ธฐ (1)
์๋ฒ์ ์์ฒญํ๋ ๋ฒ ์ด๋ค ๋ฐ์ดํฐ์ธ์ง url์ ์ ๋๋ก ์์ฑํ๋ค (ํ๋ฆฐ url๋ก ์์ฒญ์ 404error๊ฐ ๋ฌ๋ค) ์ด๋ค ๋ฐฉ๋ฒ์ผ๋ก ์์ฒญํ ์ง ๊ฒฐ์ ํ๋ค (GET/POST .. PUT, DELETE ๋ฑ) GET GET ์์ฒญ์ ์๋ฒ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ์ฝ๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. ๋ธ๋ผ์ฐ์ ์ฃผ์์ฐฝ์ url์ ์ ์ผ๋ฉด ๊ทธ๊ณณ์ผ๋ก GET ์์ฒญ์ ๋ ๋ฆฐ๋ค. POST POST ์์ฒญ์ ์๋ฒ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด๊ณ ์ถ์ ๋ ์ฃผ๋ก ์ฌ์ฉํ๋ค. POST ์์ฒญ์ ๋ ๋ฆฌ๊ณ ์ถ์ผ๋ฉด form ํ๊ทธ + method="post" + action="url"์ ์ด์ฉํ๋ฉด ๋๋ค. GET๊ณผ POST๋ ์์ฒญํ๋ฉด ๋ธ๋ผ์ฐ์ ๊ฐ ์๋ก๊ณ ์นจ๋๋ค. AJAX ์๋ฒ์ GET, POST ์์ฒญ์ ํ ๋ ์๋ก๊ณ ์นจ ์์ด ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ์ ์๊ฒ ๋์์ฃผ๋ ๋ธ๋ผ์ฐ์ ๊ธฐ๋ฅ์ด๋ค. (ex. ๋๊ธ์ ์..
[mdn, ์ฝ๋ฉ์ ํ ๋ฑ] for, forEach, for in
for ์ผ๋ฐ์ ์ผ๋ก ์ง์ ๋ ํ์๋งํผ ๋ฐ๋ณตํ ๋ ์ฌ์ฉํ๋ค. ์๋ฅผ ๋ค์ด ๋ฐฐ์ด์ ์ธ๋ฑ์ค๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๋ฐ๋ณต์ ์ํํด์ผํ๋ ๊ฒฝ์ฐ์ ์ฌ์ฉํ ์ ์๋ค. forEach forEach๋ฌธ์ ๋ฐฐ์ด์ ์ํํ ๋ ์ฌ์ฉํ๋ค. forEach๋ฌธ์ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ํจ์๋ฅผ ์คํํ๋ค. forEach๋ฌธ์ ์ฒซ๋ฒ์งธ ํ๋ผ๋ฏธํฐ์ธ element๋ฅผ ๊ธฐ์ค์ผ๋ก index๋ฅผ ๋ฐ์์ค๊ธฐ ๋๋ฌธ์ index๋ก array์ ์ ๊ทผํ๋ ๊ฒ์ ๋นํจ์จ์ ์ด๋ค. ๋ํ break, continue ๋ฑ์ ์ ์ด๋ฌธ์ ์ฌ์ฉํ ์ ์๋ค. ํ์ดํํจ์ ๋ฒ์ /์ผ๋ฐ๋ฒ์ ํ์ดํํจ์๋ฅผ ์ฐ๋ฉด ํจ์ ๋ด์ this๊ฐ์ ๋ฐ๊นฅ์์ ๊ฐ์ ธ์ ์ฐ๊ธฐ ๋๋ฌธ์ ์ฃผ์. const array = ['a', 'b', 'c']; array.forEach(element => console.log(element)); co..
Level 3 : 4 (array, object, forEach)
4. ๋ฐ์ง ์ ํํ๋ฉด array์ ์ ์ฅํ ๋ฐ์ง์ฌ์ด์ฆ ์ ๋ ๋ฐ์ค ๋ง๋ค๊ธฐ ์กฐ๊ฑด ๋ฐ์ง๋ฅผ ์ ํํ๋ฉด array์ ์ ๋ ฅํ ๋ฐ์ดํฐ๊ฐ ์ฌ์ด์ฆ ์ ๋ ๋ฐ์ค์ ์๋์ผ๋ก ์ถ๊ฐ๋์ด์ผ ํ๋ค. ํ๋ฆฐ ํ์ด ์ํ ์ ํ ๋ชจ์ ์ ์ธ ๋ฐ์ง 100 let pants = [28, 30, 32]; let selectBox = document.querySelector('.form-select'); let selectSize = document.querySelector('.form-popup'); function pantsSize() { if (selectBox.value == '๋ฐ์ง') { selectSize.classList.remove('form-hide'); for (i = 0; selectSize.length = pants.length; i++..
Level 3 : 1~3 (array, object)
1. object ์๋ฃํ์ ๋ฃ์ ๋ฐ์ดํฐ๋ฅผ html์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ var car2 = {name: '์๋ํ', price: 50000} document.querySelector('.card > span:first-child').innerHTML = `${car2.name}`; document.querySelector('.card > span:last-child').innerHTML = `${car2.price}`; 2. object ์๋ฃํ์ ๋ฃ์ 'array ๋ฐ์ดํฐ'๋ฅผ html์ ๋ฐ์ดํฐ๋ฐ์ธ๋ฉํ๊ธฐ var car2 = {name: '์๋ํ', price : [50000, 3000, 4000]} document.querySelector('.car-price').innerHTML = `${car2.price[..