๐กscript ํ๊ทธ defer, asyncscript์ html์๋ ์์์ ํจ๊ป script ํ์ผ์ ํจ๊ณผ์ ์ผ๋ก ๋ถ๋ฌ์ค๋ ๋ฐฉ๋ฒ์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค.์ฒซ๋ฒ์งธ ์์head ํ๊ทธ ์์ ์ฝ์ ๋ฒํผ โก๏ธ html ํ์ฑ์ ์์ฐจ์ ์ผ๋ก ์งํ๋๊ธฐ ๋๋ฌธ์ DOM์ด ์์ฑ๋๊ธฐ ์ ์ script๊ฐ ์คํ๋์ด #btn์ ๋ถ๋ฌ์ฌ ์ ์์ด null์ด ๋ฐ์ํฉ๋๋ค.๋๋ฒ์งธ ์์body ํ๊ทธ์ ๋ง์ง๋ง์ ์ฝ์ ๋ฒํผ let btn = document.querySelector('#btn');console.log('btn : ', btn); // ๋ฒํผ์ธ๋ฒ์งธ ์์window.onload ํจ์HTMLํ์ฑ, DOM์์ฑ ๊ทธ๋ฆฌ๊ณ ์ธ๋ถ ์ฝํ ์ธ (images, script, css, etc)๊ฐ ๋ก๋๋ ํ ๋ฐ์ํ๋ ์ด๋ฒคํธ ..
JavaScript ํ์๋ฐฐ๊ฒฝ์น๋ฌธ์๋ฅผ ์ ์ดํ๊ธฐ ์ํด ๋ง๋ค์ด์ง.์ฆ, html ๋ฌธ์๋ฅผ ์ ์ด ๋ฐ ์กฐ์ํ๊ธฐ ์ํด ๋ง๋ค์ด์ง ์ธ์ดhtml ๋ฌธ์๋ฅผ javaScript๋ก ์ ์ดํ ์ ์๋ ์ด์ ๋ ๋ธ๋ผ์ฐ์ ์์ ์น ๋ฌธ์๋ฅผ ํด์ํ ์ ์๋ ๋ ๋๋ง ์์ง์ด ์๊ธฐ ๋๋ฌธ!ํฌ๋กฌ : ๋ธ๋งํฌ๋ ๋๋ง์ ํ ์ค ํ ์ค ํด์ ํ ๋ฌธ์๋ฅผ ๊ฐ์ฒดํ ํ์ฌ javaScript๋ก ์ ๊ทผํ ์ ์๋๋ก ํจ.์ด์ฒ๋ผ ๋ฌธ์๋ฅผ ๊ฐ์ฒดํ ํ๋ค๊ณ ํด์ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model)์ ์น๋ฌธ์๋ฅผ script๋ก ์ ์ดํ ์ ์๋๋ก ํ ๋ชจ๋ธ์ด๋ค~DOM์ด๋?Document Object Model๋ก ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธTree๊ตฌ์กฐ๋ก ๋์ด์์๊ฐ๊ฐ์ ์์๋ฅผ node๋ผ๊ณ ํจ.script๋ node์ ์ ๊ทผํ์ฌ ์ ์ดํ ์ ์๊ฒ ๋จ์ ๊ทผํ๋ค → ์ ์ดํ๋ค. ๋!document๊ฐ..

ES5(ECMAScript 5) ์๋ฐ์คํฌ๋ฆฝํธ์ 5๋ฒ์งธ ๋ฒ์ ์ผ๋ก, 2009๋ ์ ๋ฐํ๋์์ต๋๋ค. ES5๋ ์๋ก์ด ๊ธฐ๋ฅ์ ์ถ๊ฐํ๋ ๊ฒ ๋ณด๋ค๋ ๊ธฐ์กด์ ๊ธฐ๋ฅ์ ๊ฐ์ ํ๋๋ฐ ์ด์ ์ ๋ง์ท์ต๋๋ค. ๊ฐ์ ๋ ๊ธฐ๋ฅ์ ์๋์ ๊ฐ์ต๋๋ค. JSON ๊ฐ์ฒด JSON(JavaScript Object Notation)์ ๋ฐ์ดํฐ๋ฅผ ๊ตํํ๋๋ฐ ์ฌ์ฉ๋๋ ๊ฒฝ๋ ๋ฐ์ดํฐ ํ์ ์ ๋๋ค. ES5์์๋ JSON.parse() ์ JSON.stringify() ๋ฉ์๋๋ฅผ ์ฌ์ฉํ์ฌ JSON ๋ฐ์ดํฐ๋ฅผ ๋ค๋ฃฐ ์ ์์ต๋๋ค. let data = '{"name":"John", "age":30}'; let obj = JSON.parse(data); console.log(obj.name); // "John" console.log(JSON.stringify(obj)); /..

HTTP(HyperText Transfer Protocol) ์ธํฐ๋ท์์ ๋ฐ์ดํฐ๋ฅผ ์ ์กํ๋ ํ๋กํ ์ฝ ํด๋ผ์ด์ธํธ์ ์๋ฒ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ๊ธฐ ์ํด ์ฌ์ฉ๋๋ฉฐ, ์ฃผ๋ก HTML, CSS, JavaScript, ์ด๋ฏธ์ง, ๋์์ ๋ฑ์ ๋ฆฌ์์ค๋ฅผ ์ ์กํ๋๋ฐ ์ฌ์ฉ HTTP๋ ์์ฒญ(Request)๊ณผ ์๋ต(Response)์ ๊ตฌ์กฐ๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํด๋ผ์ด์ธํธ๋ HTTP ์์ฒญ ๋ฉ์์ง๋ฅผ ์๋ฒ์ ์ ์กํ๊ณ , ์๋ฒ๋ ์ด์ ๋ํ ์๋ต ๋ฉ์์ง๋ฅผ ํด๋ผ์ด์ธํธ์ ์ ์กํฉ๋๋ค. ์์ฒญ๊ณผ ์๋ต ๋ฉ์์ง๋ ํค๋์ ๋ฐ๋๋ก ์ด๋ฃจ์ด์ ธ ์์ต๋๋ค. ํค๋์๋ ์์ฒญ ํน์ ์๋ต์ ๋ํ ์ ๋ณด๊ฐ ํฌํจ๋์ด ์๊ณ , ๋ฐ๋์๋ ์์ฒญ ๋๋ ์๋ต์ ๋ํ ๋ฐ์ดํฐ๊ฐ ํฌํจ๋์ด ์์ต๋๋ค. ์๋ฒ๋ ํด๋ผ์ด์ธํธ๋ก๋ถํฐ ์์ฒญ์ ๋ฐ์์ผ๋ง ์๋ตํ ์ ์์ต๋๋ค. HTTP๋ ๋ณด์์ ์ธ ์ด์ ๋ก HTTPS..

JSON(JavaScript Object Notation) ์๋ฐ์คํฌ๋ฆฝํธ ๊ฐ์ฒด๋ฅผ ๋ฌธ์์ด๋ก ํํํ๋ ๋ฐ์ดํฐ ํฌ๋งท JSON์ ์ฌ์ฉํ๋ฉด ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์ ๋ฐ์ดํฐ ์ก์์ ์ด ๊ฐ๋จํด์ง๋๋ค. ์๋ฒ์ ์น ํด๋ผ์ด์ธํธ๊ฐ ๋ฐ์ดํฐ๋ฅผ ์ฃผ๊ณ ๋ฐ์ ๋ ์์ฃผ ์ฌ์ฉ ํฉ๋๋ค. ํน์ง JSON์ ์ฌ์ฉํ๋ฉด ๊ฐ์ฒด๋ฅผ '์ง๋ ฌํ' ํ ์ ์์ต๋๋ค. โ๏ธ ์ง๋ ฌํ๋? ๊ธฐ๋ณธ ๋ฐ์ดํฐ๋ 1๋ฐ์ดํธ, 2๋ฐ์ดํธ 4๋ฐ์ดํธ ๋ฑ ํ์ ๋ณ๋ก ํฌ๊ธฐ๊ฐ ๋ค๋ฅด๊ธฐ ๋๋ฌธ์ ๋ฐ๋ ์ ์ฅ์์ ํด์ํ๊ธฐ๊ฐ ์ด๋ ต์ต๋๋ค. ์ด๋ฅผ ๋ณด์ํ๊ธฐ ์ํด ๋ฌธ์์ด๋ก ๋ณํํ์ฌ ๊ณต๋ฐฑ ์์ด ์ฐ๋ฌ์ ๋ถ์ฌ์ ์ ๋ฌํ๋ ๊ฒ์ ์๋ฏธ ํฉ๋๋ค. ์๋๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ธ์ด๋ก๋ถํฐ ํ์๋์์ง๋ง ํ์ฌ๋ ์ธ์ด์ ๋ ๋ฆฝ์ ์ผ๋ก ์ฌ์ฉ ๋ฉ๋๋ค. โ๏ธ์๋ฐ ์ง๋ ฌํ๋ ์๋ฐ๋ผ๋ฆฌ๋ง ๊ฐ๋ฅํจ. JSON์ ๋ ๊ฐ์ง ๊ธฐ๋ณธ ์๋ฃ๊ตฌ์กฐ์ธ '๋ฐฐ์ด'๊ณผ '๊ฐ์ฒด'๋ฅผ ..

์ ๊ท ํํ์(regExp) ๋ฌธ์์ด์ ํฌํจ๋ ํน์ ๋ฌธ์ ์กฐํฉ์ ์ฐพ๊ธฐ ์ํด ์ฌ์ฉ๋๋ ํจํด ์ ๋๋ค. ๊ธฐ๋ณธ ํํ const regexp = /World/; const regexp = new RegExp("World"); ์์ let str = "Hello World! World!"; const re = /World/; console.log(re.test(str)); // ํด๋น ๋ฌธ์์ด์ ํฌํจ ์ฌ๋ถ ํ์ธ console.log(str.search(re)); // ํด๋น ๋ฌธ์์ด์ ์์ ์์น ๋ฐํ exec() : ํจํด๊ณผ ์ผ์นํ๋ ๋ฌธ์์ด ๋ฐํ ์ธ์๋ก ์ ๋ฌ๋ ๋ฌธ์์ด์์ ํน์ ํจํด์ ๊ฒ์ํ์ฌ, ํจํด๊ณผ ์ผ์นํ๋ ๋ฌธ์์ด ๋ฐํ ๋ง์ฝ, ํจํด๊ณผ ์ผ์นํ๋ ๋ฌธ์์ด์ด ์์ผ๋ฉด null ๋ฐํ let targetStr = "๊ฐ์ฅ ํฐ ์ค์๋ ํฌ๊ธฐ,..

PointerEvent ์์ฑ KeyboardEvent ๊ฐ์ฒด ํ์ธ keyCode => key const btnEl = document.querySelector("button"); btnEl.addEventListener("click", function(e) { console.log("๋ฒํผ์ด ๋๋ ค์ก์ต๋๋ค." + e); console.log("x์ขํ : " + e.clientX); console.log("y์ขํ : " + e.clientY); console.log("๋ง์ฐ์ค๊ฐ ํด๋ฆญ๋ x ์ขํ : " + e.pageX); console.log("๋ง์ฐ์ค๊ฐ ํด๋ฆญ๋ y ์ขํ : " + e.pageY); console.log("๋ชจ๋ํฐ์ ์ผ์ชฝ ๋ชจ์๋ฆฌ ๊ธฐ์ค์ผ๋ก ๋ง์ฐ์ค๊ฐ ํด๋ฆญ๋ x ์ขํ : " + e.screenX); con..

์ด๋ฒคํธ๋ ์น ๋ธ๋ผ์ฐ์ ์ ์ฌ์ฉ์ ์ฌ์ด์ ์ํธ์์ฉ์ด ๋ฐ์ํ๋ ํน์ ์์ ์ ์๋ฏธ ํฉ๋๋ค. ์ด๋ฒคํธ๊ฐ ๋ฐ์ํ๋ฉด ์ด๋ฒคํธ ์ข ๋ฅ์ ๋ฐ๋ผ ์ด๋ค ์์ ์ ํ๊ฑฐ๋ ๋ฏธ๋ฆฌ ๋ฑ๋กํ ํจ์๋ฅผ ํธ์ถํ๋ ๋ฑ์ ์กฐ์์ ์๋ฐ์คํฌ๋ฆฝํธ๋ก ์ง์ ํ ์ ์์ต๋๋ค. ์ด๋ฒคํธ ์ข ๋ฅ 1. ์ธ๋ผ์ธ ๋ฐฉ์ ์ธ๋ผ์ธ ๋ฐฉ์ // 1. ์ธ๋ผ์ธ ๋ฐฉ์ function clickEvent() { alert("์ธ๋ผ์ธ ๋ฐฉ์์ผ๋ก ๊ตฌํ๋ ํจ์๊ฐ ํธ์ถ ๋์์ต๋๋ค!"); } 2. ์ด๋ฒคํธ ๋ฑ๋ก ๋ฉ์๋(addEventListener()) DOM์์ ์ ๊ณตํ๋ addEventListener() ๋ฉ์๋๋ฅผ ์ฌ์ฉํด ์ด๋ฒคํธ๋ฅผ ๋ฑ๋กํ ์ ์์ต๋๋ค. ๊ฐ์ฅ ๊ถ์ฅํ๋ ๋ฐฉ์์ ๋๋ค. .addEventListener("", ); // โญ๏ธ 2. ์ด๋ฒคํธ ๋ฑ๋ก ๋ฉ์๋ ๋ฐฉ์ function eventFunc() { ..

HTML ๋ฌธ๋ฒ์ผ๋ก ์์ฑํ ํ๊ทธ, ์ฃผ์, ํ ์คํธ์ ๊ฐ์ ๊ตฌ์ฑ ์์๋ค์ ์น๋ธ๋ผ์ฐ์ ์์ ๊ฐ๊ฐ ํ๋์ ๊ฐ์ฒด๋ก ์ธ์ ํฉ๋๋ค. ์ด๋ฌํ HTML ๊ตฌ์ฑ ์์๋ค์ ๋ค๋ฃจ๋ ๊ฐ์ฒด๋ฅผ ๋ฌธ์ ๊ฐ์ฒด ๋ชจ๋ธ(DOM)์ด๋ผ๊ณ ํฉ๋๋ค. header link DOM ํธ๋ฆฌ๋ document ๊ฐ์ฒด ํ์์ HTML ํ๊ทธ ์์, ์์ฑ, ํ ์คํธ, ์ฃผ์ ๋ฑ์ด 'ํธ๋ฆฌ' ํํ๋ก ๊ตฌ์ฑ๋๋๋ฐ, ์ด๋ค์ ๊ฐ๊ฐ '๋ ธ๋'๋ผ๊ณ ํฉ๋๋ค. document๋ ๋ ธ๋๊ฐ ์๋๋ผ ๊ฐ์ฒด์ด๋ฏ๋ก ์ฌ๊ธฐ์๋ html์ด ๋ฃจํธ ๋ ธ๋๊ฐ ๋ฉ๋๋ค. ๋ฉ์๋๋ก ๋ ธ๋ ์ ํํ๊ธฐ ์ผ๋ฐ์ ์ผ๋ก ์์ ๋ ธ๋๋ฅผ ๋ฐ๋ก ์ ํํ ์ ์๋ ๋ฉ์๋๋ฅผ ์ด์ฉํ ๋ ธ๋ ์ ํ ๋ฐฉ๋ฒ์ด ๋ง์ด ์ฐ์ ๋๋ค. ์์ฑ๊ฐ๊ณผ ํ๊ทธ๋ช ์ฌ์ฉ - get ๋ฉ์๋ getElementById("id๋ช ") getElementById() ๋ฉ์๋๋ก ์ ํํ๋ ์์ ๋ ธ..

์๋ฐ์คํฌ๋ฆฝํธ์์์ class์ ์๋ฐ์ class๋ ์ ์ฌํ ์ ์ด ๋ง์ต๋๋ค. ๊ณตํต์ฌํญ์ ๋ฐ๋ก ๋ค๋ฃจ์ง ์๊ณ , ์ฐจ์ด์ ์ ๋ํด์๋ง ๋ค๋ฃจ๊ฒ ์ต๋๋ค. ์ฐจ์ด์ โ ์๋ฐ ํด๋์ค๋ ์ธํฐํ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ ๋ค์ค ์์์ ๋ชจ๋ฐฉํ ์ ์์ต๋๋ค๋ง, ๐ฆ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ธํฐํ์ด์ค ๊ฐ๋ ์ด ์์ผ๋ฏ๋ก ๋ค๋ฅธ ๋ฐฉ๋ฒ์ ์ฌ์ฉํด์ผ ํฉ๋๋ค. โ ์๋ฐ ํด๋์ค์์๋ super ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํด๋์ค์ ์์ฑ์๋ฅผ ๋ช ์์ ์ผ๋ก ํธ์ถํด์ผ ํฉ๋๋ค. ๐ฆ์๋ฐ์คํฌ๋ฆฝํธ ํด๋์ค์์๋ super ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํด๋์ค์ '์์ฑ์'๋ฅผ ํธ์ถํ๋ ๊ฒ ์ด์ธ์๋, super ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์์ ํด๋์ค์ '๋ฉ์๋'๋ฅผ ํธ์ถํ ์ ์์ต๋๋ค. โ์๋ฐ ํด๋์ค์์๋ ์์ ํด๋์ค์ ๋ฉ์๋๋ฅผ super ํค์๋๋ฅผ ์ฌ์ฉํ์ฌ ์ค๋ฒ๋ผ์ด๋ฉ์ ๋ฐฉ์งํ ์ ์์ต๋๋ค๋ง, ๐ฆ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ์ค๋ฒ..