2022. 3. 6. 14:54ใ๊ฐ๋ ์ ๋ฆฌ ์์ ์ค/JavaScript
๐ง๐ป๐ป Javascipt ๊ณต๋ถ ํ๊ธฐ
๐ฑ GitHub : https://github.com/junyharang-FrontEnd-coding-study/javasctipt-study
์๋ฐ ์คํฌ๋ฆฝํธ๋ ์น ๋ธ๋ผ์ฐ์ ์์ ๋์ํ๋ ์คํฌ๋ฆฝํธ์ธ ๊ฒ์ด์์.
๋ํ, html์ ํธ๋ค๋ง ํ๋ ์คํฌ๋ฆฝํธ๋๋๋ค!
html <body>
Tag๊ฐ ๋๋๋ ๋ถ๋ถ์ <script>
๋ฅผ ์์ฑ ํด์ฃผ๋ ๊ฒ์ด ์ข์๋ฐ, ๊ทธ ์ด์ ๋ ๋ธ๋ผ์ฐ์ ๊ฐ ๋๋๋ง์ ํ ๋, ์ฝ๋๊ฐ ์์์ ์๋๋ก ์ฝ์ ๊ฒ์ธ๋ฐ, ๋ง์ ์ฝ๋๊ฐ ์๋ค๊ณ ํ์ ๋, ํ๋ฉด ๋ถํฐ ๋ฟ๋ ค์ฃผ๊ณ (html) ๋์ค์ script
๊ฐ ์ด์์ด ์๋์ง ๋ถ์ํ๋ ๊ฒ์ด ์ด์ฉ์ ์
์ฅ์์ ๋น ๋ฅด๊ฒ ๋๊ปด์ง ์ ์๊ธฐ ๋๋ฌธ์ธ ๊ฒ์ด์์.
bootstrap Site : Bootstrap
Get started
ํด๋ฆญ ํฉ๋๋ค!
css์ <link>
๋ณต์ฌ ํ๋ ๊ฒ์ด์์.
ํด๋น ๋ด์ฉ์ <Title>
Tag ๋ฐ์ ์์ฑ ํด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
์ด์ ์ธ๋ถ javascipt library๋ฅผ ์ด์ฉํ๊ธฐ ์ํด ์๋์ ๊ฐ์ด ํด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
์์ ๋ณด์ด๋ <script>
๋ค์ ๋ชจ๋ ๋ณต์ฌํ์ฌ ์ฝ๋์ ๋ฃ์ด ์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
์์ ๊ฐ์ด <body>
์์ ์ค์ ์ ์ผ๋ก ์ฐ๋ฆฌ๊ฐ๊ฐ javascipt๋ฅผ ์์ฑํ <script>
์์ ๋ฃ์ด ์ฃผ์ด์ผ ํ๋ ๊ฒ์ด์์.
์ด์ ๋ ์์ ์ ์๋ฏ์ด ์น ๋ธ๋ผ์ฐ์ ๊ฐ ๋ถ์์ ํ ๋, ํด๋น library์ ๋ํ ํด์์ ๋จผ์ ํ ๊ฒ์ด๋ฏ๋ก, ์๋ ์ ํ๋ฅผ ๋ง๊ธฐ ์ํด ์ด๋ ๊ฒ ํ๋ ๊ฒ์ด์์.
css์ ๋ํ link๋ฅผ <head>
์ ๋ฃ์ด์ค ์ด์ ๋ css๋ ํ๋ฉด์ ๊พธ๋ฉฐ์ฃผ๋ ๊ฒ์ด๊ธฐ ๋๋ฌธ์ ์์ ๊ฐ์ด ํ๋ ๊ฒ์ด์์.
๋จผ์ ํ์๊ฐ์ ์ฐฝ์ ๋ง๋ ๋ค๊ณ ์๊ฐํ๊ณ , ์ด๋ฆ์ ๋ฐ์ ์ ์๋ ๋ถ๋ถ์ html Tag๋ฅผ ํตํด ์์ ๊ฐ์ด ๋ง๋ค์ด ์ค ๊ฒ์ด์์.
<select>
๋ฅผ ํตํด ์ ํํ ์ ์๋ ๋ถ๋ถ์ ๋ง๋ค์ด ์ค ๊ฒ์ด์์.
JavaScript๋ ์ด์ฉ์๊ฐ input ๋ฑ์ ์ ๋ ฅํ ๊ฐ์ ๋ฐ์์ค๋ ์ฉ๋๋ฅผ ์ํด ์ฌ์ฉํ๋ค๊ณ ์๊ฐํ๋ฉด ์ข์ ๊ฒ์ด์์.
์ฆ, input
๊ฐ์ ์ป์ด์ค๋ ๊ฒ๊ณผ ํน์ Element
์ ๋ด์ฉ์ ๊ฐ์ท๋ค๊ฐ ๋ณด์ฌ์คฌ๋ค๊ฐ ํ๋ ์ฉ๋๋ก ์ฌ์ฉํ๋ต๋๋ค!
input
๋ฑ์์ ์
๋ ฅ๋ ๊ฐ์ ์ฒ๋ฆฌํ๊ธฐ ์ํ ๋ฑ๋ก ์ด๋ผ๋ button
์ ์์ฑ ํด ์ค ๊ฒ์ด์์.
jquery Library Download : jQuery CDN
jQeury 3.x์ minified๋ฅผ ๋๋ฌ ์ฃผ์ธ์!
์์ <script>
๋ฅผ ๋ณต์ฌํ์ฌ Source Code์ ๋ถํ๋ฃ๊ธฐ ํด์ฃผ๋ฉด ๋๋ ๊ฒ์ด์์.
์ด๋ ๊ฒ ์์ ๊ฐ์ด Library๋ฅผ URL ๋ฑ์ผ๋ก ๋ฐ์์ ์ฌ์ฉํ ์๋ ์์ง๋ง, ์ค์ ํ๋ก์ ํธ๋ฅผ ํ๋ค๋ฉด ์ง์ ๋ค์ด๋ก๋๋ฅผ ๋ฐ์ ํน์ ์์น์ ๋ฃ์ด๋๊ณ ์ฌ์ฉํ๋ ๊ฒ์ด ์ข์ ๊ฒ์ด์์. ๊ทธ ์ด์ ๋ ํด๋น URL ํ์๋ ์๋ ์๊ณ , Network ๋ฌธ์ ๋ฑ์ผ๋ก ์๋น์ค๊ฐ ๋ถ๊ฐํ ์๋ ์๊ธฐ ๋๋ฌธ์ด๋๋๋ค.
<Button>
์ ๋ํ Action ์ฒ๋ฆฌ๋ฅผ ์ํด onclick
์ ๋ง๋ค๊ณ , ๊ฑฐ๊ธฐ์ JavaScript ํจ์๋ฅผ ํธ์ถ ํ ์ ์๊ฒ ๋ฃ์ด์ฃผ๋ ๊ฒ์ด์์.
javascript ํจ์๋ funtion <ํจ์๋ช
>() { }
์ผ๋ก ๋ง๋ค์ด ์ค ๊ฒ์ด์์.
alert
์ html
์ด ๊ฐ์ง๊ณ ์๋ ๊ธฐ๋ณธ ํจ์์ธ๋ฐ, ๊ฒฝ๊ณ ์ฐฝ์ ๋์ด์ฃผ๋ ์น๊ตฌ ๋๋๋ค!
์์ ๊ฐ์ด ์ ๋ ฅํ๊ณ ‘๋ฑ๋ก' ๋ฒํผ์ ํด๋ฆญํ๋ฉด ์๋์ ๊ฐ์ด ๊ฒฝ๊ณ ์ฐฝ์ด ๋์ค๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์.
document.getElementById("ID๊ฐ")
์ html Tag
์ id
๊ฐ์ ๋ฃ์ ๋ช
์นญ์ ๊ฐ์ง๊ณ ์์ ์ด๋ค ์์
์ ํ๊ฒ ๋ค๋ผ๋ ์๋ฏธ์ธ ๊ฒ์ด์์.
.value
๋ ํด๋น Element
์ ๊ฐ์ ๋ณด์ฌ๋ฌ๋ ์๋ฏธ๋๋๋ค!
์ด๋ ๊ฒ ํด ๋๋ฉด ๊ฒฝ๊ณ ์ฐฝ์ ํด๋น Element
์ ID๊ฐ์ ๊ฐ์ง ์น๊ตฌ์ ๊ฐ์ ๋ณด์ฌ์ฃผ๋ ๊ฒ์ด์์.
์ด๋ฒ์๋ ์์ ๊ฐ์ด Element
์ ID
๊ฐ city์ธ <Select>
์ ๊ฐ์ ๊ฐ์ ธ ์ค๋๋ก ํ ๊ฒ์ด์์.
๋ณด์ด๋ ๋ด์ฉ์ ์์ธ์ด์ง๋ง, ๊ทธ ์์ value๋ฅผ 02
๋ก ์ฃผ์๊ธฐ ๋๋ฌธ์ ‘02’ ๊ฐ ์ถ๋ ฅ ๋๋ ๊ฒ์ด์์.
jQuery
jQuery๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๋ณต์กํ๊ณ , ๊ธธ์๋ Javascritpt ๋ฌธ๋ฒ์ ์ข ๋ ๊ฐ๊ฒฐํ๊ณ , ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ๊ธฐ ์ํด์์ธ ๊ฒ์ด์์.
JQuery๋ Javascript๋ฅผ ํ๋ฒ๋ ๊ฐ์ธ์ ํ์ฌ ๊ด๋ฆฌํ๋ค๊ณ ๋ณด๋ฉด ๋๋ ๊ฒ์ด์์. ๋ํ, ์์ ์๋ ์น ๋ธ๋ผ์ฐ์ ๋ง๋ค ์์ดํ ๋ฌธ๋ฒ์ ํตํด ์ฝ๋ฉ์ ํ์ด์ผ์ง ๋์์ ํ์๋๋ฐ, ์ด๋ฌํ ๋ถํธํ ์ ์ ๊ฐ์ ํ์ฌ ํ๋์ Jquery ๋ฌธ๋ฒ์ผ๋ก ์ฌ๋ฌ ์น ๋ธ๋ผ์ฐ์ ์์ ์ด์ฉํ ์ ์๊ฒ ๋์ ์ฃผ๋ ๊ณ ๋ง์ด ์น๊ตฌ์ธ ๊ฒ์ด์์.
๋ฌผ๋ก ! ์ต๊ทผ์๋ Javascript์ ๋ฐ์ ์ผ๋ก ์ธํด jQuery๋ฅผ ์ฐ์ง ์๋ ์ถ์ธ๋ผ๊ณ ํฉ๋๋ค!
JQuery๋ฅผ ์ฌ์ฉํ๋ฉด ์ด๋ ๊ฒ ๊ฐ๋จํ๊ฒ ์ฌ์ฉ์ ํ ์ ์๋๋ฐ, $๋ฅผ ๋ถ์ฌ์ฃผ๊ณ , #์ ID๋ฅผ ์๋ฏธํ๋ ๊ฒ์ด์์.
๋์ผํ๊ฒ ๊ฒฐ๊ณผ๋ฅผ ์ป์ ์ ์๋ ๊ฒ์ ํ์ธํ ์ ์๋ ๊ฒ์ด์์!
๋ง์ฝ์ ์ด์ฉ์๊ฐ ‘์ธ์ฒ'์ ์ ํํ์ ๋๋ ์ธ์ฒ์ ํด๋นํ๋ ์ง์ญ๊ตฌ๋ง ์ถ๋ ฅํ๊ณ , ์์ธ์ ์ ํํ์ ๋๋ ์์ธ์ ํด๋นํ๋ ์ง์ญ๊ตฌ๋ง ์ถ๋ ฅ ํ๊ณ ์ถ๋ค๋ฉด?
์์์ style
์ display:none
์ผ๋ก ํด ์ฃผ๋ฉด ๋ณด์ด์ง ์๊ฒ ํ๊ฒ ๋ค๋ ์๋ฏธ์ธ ๊ฒ์ด์์.
์์ ๊ฐ์ด ์ธ์ฒ์ ์ง์ญ๊ตฌ๋ ๋ณด์ด์ง ์๊ฒ ๋๋ ๊ฒ์ด์์.
onchange
Event๋ button์ ํด๋ฆญ์ด๋ผ๋ Event๊ฐ ๋ฐ์ํ๊ธฐ ๋๋ฌธ์ onclick
์ด๋ผ๋ Event๊ฐ ์์ง๋ง, select
๋ click์ ๊ฐ๋
์ด ์๋๊ณ , ๋ณ๊ฒฝ์ ๋ํ ๊ฐ๋
์ผ๋ก ๋ณด๊ธฐ ๋๋ฌธ์ onchange
๋ผ๋ Event๊ฐ ์๋ ๊ฒ์ด์์.
๋จผ์ ๋๋ค์ ํด๋นํ๋ ID๋ฅผ ๊ฐ์ง ๋ <select>
๋ฅผ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ณด์ด์ง ์๊ฒ ์ ํ์ ํ ๋ค getElementById
์ "region_"+city
๋ฅผ ํ์ฌ city๊ฐ ์ ํ์ด ๋์์ ๋ ๊ทธ ๊ฐ์ด city๋ผ๋ ๋ณ์์ ๋ค์ด๊ฐ๊ฒ ๋๊ณ , ๊ทธ ๋ณ์์ ๋ด๊ธด ๊ฐ์ด ์์ธ์ด๋ฉด ‘02’, ์ธ์ฒ์ด๋ฉด ‘032’์ด๋๊น region_
๋ค์ ํด๋น ๊ฐ์ ๋ถํ์ฃผ๊ณ , ๊ทธ๊ฒ์ style.display = "";
ํ๊ฒ ๋๋ฉด ๋ณด์ด๊ฒ ๋๋ ๊ฒ์ด๋ค.
์์ javascript ๋ฌธ๋ฒ์ jQuery๋ก ๋ฐ๊พธ๋ฉด ์๋์ ๊ฐ์ ๊ฒ์ด์์.
JavaScript์ ๋ณ์
1) var:
์์ ๊ฐ์ด ํ๋ฉด value
์ x๋ฅผ ๋ฃ์ด์ฃผ๊ฒ ๋๋ ๊ฒ์ด์์. ๊ทธ๋ฆฌ๊ณ , ๊ฒฝ๊ณ ์ฐฝ์ x๊ฐ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ ๋์ด์ฃผ๋ ๊ฒ์ด์์. x์๋ ํ์ฌ 3์ด ๋ด๊ฒจ ์์์ ์ ์ ์์ด์.
์์ ๊ฐ์ด var
์ ํตํด ๋ค์ ๋์ผํ ์ด๋ฆ์ ๋ณ์์ ๊ฐ์ ๋ด์์ฃผ๊ฒ ๋๋ฉด Exception์ด ๋์ค๋์ง ์๋๋ฉด x์ 5๊ฐ ๋ด๊ฒจ์ผ ํ๋๋ฐ,
์ด๋ ๊ฒ ๊ทธ๋๋ก 3์ด ๋ด๊ฒจ ๋ฒ๋ฆฌ๋ ๊ฒ์ด์์. ์ฆ, ์ด๊ธฐํ๊ฐ ๋ฐ๋ก ๋์ด ๋ฒ๋ฆฌ๋ ๊ฒ์ด์ง์!
์ฆ, var
์ ๋์ผํ ๋ณ์๋ช
์ ์ ์ธํด๋ ํ์ฉํด์ฃผ๋ ์๋ฃํ์ธ ๊ฒ์ด์์.
2) let:
let
์ ๋์ผํ ๋ณ์๋ช
์ ์ ์ธํ๊ฒ ๋๋ฉด Error๊ฐ ๋์ค๋ ๊ฒ์ด์์.
๋ธ๋ผ์ฐ์ ์์๋ ์์ ์ถ๋ ฅ์ด ๋์ง ์๊ณ , ๊ฐ๋ฐ์ ๋๊ตฌ์์๋ ์์ ๊ฐ์ด ๋ฌธ์ ๊ฐ ์๋ค๊ณ ์๋ ค์ฃผ๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์.
3) const:
const
๋ ์์ ๊ฐ์ด ๋ณ์๋ฅผ ์ฌํ ๋น ํ๋ฉด Error๊ฐ ๋ฐ์ํ๋ค. const
๋ ํ๋ฒ๋ง ์ฌ์ฉ์ด ๊ฐ๋ฅํ๊ณ , ์ฌ ํ ๋น์ด ๋ถ๊ฐํ ์น๊ตฌ์ธ ๊ฒ์ด์์. ์์ ๊ฐ๋
์ด๋ผ๊ณ ์๊ฐํ๋ฉด ๋์ง ์์๊น์?
์๋ฃํ Type
// ์ซ์, ์์์ ์ซ์, ๋ฌธ์, Boolean, ๊ฐ์ฒด(Object), ๋ฐฐ์ด ๋ฑ
let a = 1; // ์ซ์
a = 1.231; // ์์์ ์ซ์
a = "์ฃผ๋ํ๋"; // ๋ฌธ์ ('')๋ ๊ฐ๋ฅ
a = true; // boolean
let obj = {}; // ๊ฐ์ฒด(Object)๋ ๋ฐ๋์ {}๋ก ๊ฐ์ธ์ค์ผ ํ๋ค. (Key:Value๋ก ์ด๋ค์ ธ ์๋ค.)
๊ฐ์ฒด Type
๊ฐ์ฒด Type์ ์ด๋ค Data Type (์ซ์, ๋ฌธ์, ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ)์ ๋ชจ๋ ๋ด์ ์ ์๋ ๊ฒ์ด์์.
์์ ๊ฐ์ด Object Type์ผ๋ก ๊ฐ์ ๋ธ๋ผ์ฐ์ ๋ ์๋ฒ๋ก ๋ณด๋ด๊ฒ ๋๋ฉด ์๋์ ๊ฐ์ด ์ ๋ฌ ๋๋ ๊ฒ์ด์์.
Javascript์์ ๊ฐ์ฒด(Object)๋ฅผ ์ฌ์ฉํ๋ ์ฃผ ๋ ์ด์ ๋ ์๋ฒ๋ ๋ค๋ฅธ Page์ ๊ฐ์ ๋ชจ์ ๋ด์ ๋๊ฒจ์ฃผ๊ธฐ ์ํจ์ธ ๊ฒ์ด์์.
ํ ์๋ก JSON
์ Key
์ Value
๋ก ์ด๋ค์ง ๊ฐ์ฒด์ธ๋ฐ, ์ด์ ๊ฐ์ด Server๋ก Data๋ฅผ ๋ณด๋ผ ๋ ๊ฐ๊ฐ์ ๋ณ์๋ฅผ ์ ์ธํด์ ํ๋ํ๋ ๋ณด๋ด์ง ์๊ณ , ๋ชจ์์ ๋ณด๋ด๊ธฐ ์ํด ์ฌ์ฉํ๋ ๊ฒ์ด์์.
์์ ๊ฐ์ด ๊ฐ์ฒด๋ฅผ ํจ์์๋ค๊ฐ ์ ๋ฌ์ ํ๋ฉด ๊ทธ ์์ ์๋ ๊ฐ์ด ๋ค ์ ๋ฌ๋๋ ๊ฒ์ ๋ณผ ์ ์๋ ๊ฒ์ด์์.
Javascript์์๋ ์ฒ์์ Object
์ ๊ฐ์ ๋ฌด์กฐ๊ฑด ์ฒ์(์ ์ธํ๋ ์์ )๋ถํฐ ์ก์๋์ง ์์๋ ๋๋ ์ฅ์ ์ด ์์ด์.
let objTest = {}; // objTest ๋
objTest.name = $("#name").val(); // objTest์ name์ด๋ผ๋ Key๋ก ์ ๊ทผ
objTest.city = $("#city").val(); // objTest์ city๋ผ๋ Key๋ก ์ ๊ทผ
์์ ๊ฐ์ด ์ฌ์ฉ๋ ๊ฐ๋ฅํ๋ฉฐ, ์ด๋ ๊ฒ ํ๊ฒ ๋๋ฉด objTest.name
๋ฅผ ํ ๋ Key
๊ฐ name
์ผ๋ก ์กํ๊ณ , ๊ทธ ์์ ๊ฐ์ด ๋ค์ด๊ฐ๊ฒ ๋๋ ๊ฒ์ด์์.
๋ฐฐ์ด(Array)
๋ฐฐ์ด์ ์ด๋ค Data Type (์ซ์, ๋ฌธ์, ๋ฐฐ์ด, ๊ฐ์ฒด ๋ฑ)์ ๋ชจ๋ ๋ด์ ์ ์๋ ๊ฒ์ด์์.
๋ฐ๋ณต๋ฌธ๊ณผ ์กฐ๊ฑด๋ฌธ
1) ๋ฐ๋ณต๋ฌธ : ์๋ฐ์ ๋ฌธ๋ฒ์ด ๋๊ฐ์ ๊ฒ์ด์์. ๋ช ๋ฒ์งธ ๋ถํฐ let i = 0;
๋ช ๋ฒ์งธ ๊น์ง i < city.length;
์ฆ๊ฐ ์กฐ๊ฑด๋ฌธ i++
2) ์กฐ๊ฑด๋ฌธ : ์๋ฐ์ ๋ฌธ๋ฒ์ด ๋๊ฐ์ ๊ฒ์ด์์.
์์ ์กฐ๊ฑด๋ฌธ์ ํ์ด ์ฐ์๋ฉด i๊ฐ 0๊ณผ ๊ฐ๋ค๋ฉด if ๋ฌธ์ ๋ค์ด๊ฐ๋๋ฐ, city๋ผ๋ Id๊ฐ์ ๊ฐ์ง ๋ฐฐ์ด์ ์ถ๊ฐ๋ฅผ ํ๋ค. ๋ฌด์์?
<option value="' + city[i].code + '" selected>' + city[i].name + '</option>');
์์ city[i].code
๋ฅผ ๋ถ์ํด ๋ณด๋ฉด city๋ผ๋ ์ด๋ฆ์ i๋ฒ์งธ ํ์ฌ๋ 0๋ฒ์งธ๋ผ๊ณ ํ๋ฉด ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค ๊ฐ์ธ code:02, name: ์์ธ
์ธ ๋ด์ฉ์ด๊ณ , ์ฌ๊ธฐ์ .code
๋ ‘02’๊ฐ ๋๋๋ฐ, ์ด๊ฒ์ ์ ํํ๋ผ๋ ๊ฒ์ด๊ณ , ๊ทธ ๋ค์ ๋ด์ฉ์ ์ด๋ฆ (์์ธ)์ select Box
์์ ์ ํ๋๊ฒ ํ๋ ๊ฒ์ด์์.
์์ ๊ฐ์ด ์๋ฐ ์กฐ๊ฑด๋ฌธ๊ณผ ๋๊ฐ์ด else if
๋ ์ฌ์ฉํ ์ ์๋ ๊ฒ์ด์์.
์ฐธ๊ณ ์๋ฃ: https://www.youtube.com/watch?v=hLhHFiwhRfA&t=1750s
'๊ฐ๋ ์ ๋ฆฌ ์์ ์ค > JavaScript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JavaScript] Promise์ async ๊ทธ๋ฆฌ๊ณ await (0) | 2022.04.10 |
---|---|
[JavaScript] ๊ธฐ๋ณธ ๋ฌธ๋ฒ (0) | 2022.04.07 |
[JavaScript] lodash (0) | 2022.03.16 |