[1-1] JavaScript
์น ํ์ด์ง๋ฅผ ๋์ ์ผ๋ก ๋์ํ ์ ์๋๋ก ๋ง๋ค์ด์ฃผ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด
์นํ์ด์ง์ ๊ธฐ๋ณธ์ ๋ฐ์ดํฐ ๊ด๋ฆฌ
๋ผ๊ณ ํ ์ ์๋ค.
๋ฐ์ดํฐ ๊ด๋ฆฌ๋ฅผ ํ๋๋ฐ ์์ด ๊ฐ์ฅ ํจ์จ ์ ์ธ ๋ฐฉ๋ฒ์ ์ด๋๊ฐ์ ์ ์ฅํ๊ณ ์ถ๋ ฅํ์ฌ ์ ์ ๊ฐ ๊ฐ๋ฅํ๋๋ก ํ๋ ๊ฒ ์ด๋ค.
์ด๋ฅผ ๊ฐ๋ฅํ๋๋ก ํ๋ ๋ฐฉ๋ฒ์ด ๋ณ์
์ ์์
๋ฅผ ์ด์ฉ ํ๋ ๋ฐฉ๋ฒ์ด๋ค.
๋ณ์์ ์์
: ๋ฐ์ดํฐ๋ฅผ ๋ด๊ณ , ๊บผ๋ด ์ฐ๋ ์์์ฌ์ฌ์ฉ
ํ๊ณ , ํด๋น ๋ฐ์ดํฐ์ ์ ๊ทผ
ํ๊ธฐ ์ํด ํ์ ํ๋ค.๋ณ์๋ฅผ ์ ์ธํ์ค๋๋ ์์ฝ์ด
๋ฅผ ์ ์ธํ ๋ณ์๋ช
์ ์ ์ธํ์
์ผ ๋๋ค.
๐ JavaScript์์ฝ์ด
๋ฐ์ดํฐ ํ์
์ด๋ผ ํจ์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ์ ์ข
๋ฅ ์ด๋ฉฐ, ์๋ฃํ์ด๋ผ๊ณ ๋ ๋ถ๋ฆฐ๋ค.
๐ ๋ฐ์ดํฐ ํ์
์ข
๋ฅ
๐ ๋ฐ์ดํฐ ํ์
์ ๋ํด ์์๋ณด์
์ฌ๋ฌ๊ฐ์ ๋ฐ์ดํฐ๋ฅผ ์์์ ํจ๊ป ์ ์ฅํ๊ณ ์ถ์๋ ์ฌ์ฉ
element
: ๋ฐฐ์ด ์์ ๋ฐ์ดํฐ๋ค ํ๋ํ๋
index
: ๊ฐ ์์์ ์์๋ฅผ ๋ถ์ฌ
property
, ์ฆ ์์ฑ
์ ๊ฐ์ง๊ณ ์์ผ๋ฉฐ ์ด ์์ฑ์ ํตํด์ ๋ฐฐ์ด์ ๊ธธ์ด๋ฅผ ๊ตฌํ๊ฑฐ๋, ๋ฐฐ์ด์ ๋ด์ฅ๋ ํจ์๋ฅผ ์ด์ฉํด ๋ฐฐ์ด์ ํ์ฅํ์ฌ ์ฌ์ฉํ ์ ์๋ค.๊ฐ์ฒด๋ key
๋ฅผ ํตํด ํด๋น ๋ฐ์ดํฐ๊ฐ ๋ฌด์์ ๋ํ ๋ฐ์ดํฐ์ธ์ง ๋ช
์ํด์ค ์ ์๋ค.
๊ฐ์ฒด ์์ ๋ฐ์ดํฐ๋ค ํ๋ํ๋๋ฅผ ํ๋กํผํฐ(property)
๋ผ๊ณ ํ๋ค.
key
๊ฐ์ ์ ๊ทผํด์ value
๋ฅผ ๊ฐ์ง๊ณ ์จ๋ค.ํจ์ ๋ ์ด๋ค ๊ธฐ๋ฅ์ ์ํ ํ๊ฑฐ๋ ๊ณ์ฐ์ ์ํํ ์ ์๋๋ก ํ๋ ๋๊ตฌ
๐ HTML์ ํ๊ทธ์๋ ๋ถ์ฌํ ์ ์๋ ์์ฑ
๐ ์๋ฐ์คํฌ๋ฆฝํธ์์ HTML์ ๊ฐ์ฒด ๊ฐ์ ธ์ค๊ธฐ
return
: ํจ์๋ ๋ด๋ถ์ ์กด์ฌํ๋ ๋ฐ์ดํฐ ํน์ ์ฐ์ฐ์ ๊ฒฐ๊ณผ๋ฅผ ์ธ๋ถ๋ก ๊ฑด๋ค์ค ์ ์๋ค.
ํจ์ ์ ์ธ์
function ํจ์์ด๋ฆ(param1, param2, ...){ // ...code here return ๊ฒฐ๊ณผ๊ฐ }
ํจ์ ํํ์
const ํจ์์ด๋ฆ = function(param1, param2, ...){ // ...code here return ๊ฒฐ๊ณผ๊ฐ }
ํ์ดํ ํจ์
const ํจ์์ด๋ฆ = ( param1, param2, ... )=>{ // ...code here return ๊ฒฐ๊ณผ๊ฐ }
localhost
: ์ฌ์ฉ์์ ์ปดํจํฐ ์์ฒด๋ฅผ ๊ฐ๋ฆฌํค๋ ip ์ฃผ์, 127.0.0.1๊ณผ ๊ฐ์ ์ฃผ์๋ฅผ ์๋ฏธ
๋ฐ์ดํฐ๋ฅผ ์๋ก ๋น๊ต ํด์ฃผ๋ ์ฐ์ฐ์
๋น๊ต์ฐ์ฐ์์๋ ๋๊ฐ์ง์ ์ฐ์ฐ์๊ฐ ์์ง๋ง, ์ค๋ฌด์์๋ ์๊ฒฉํ ๋น๊ต์ฐ์ฐ์ ๋ง์ ์ฌ์ฉ ํ๋ค.
์์ ํ์
์ ์ข
๋ฅ
: String, Number, Boolean, Bigint, undefined, Symbol, null์ฐธ์กฐ ํ์
์ ์ข
๋ฅ
: ์์ ํ์
์ ์ ์ธํ ๋ชจ๋ ๋๋จธ์ง๊ฐ ์ฐธ์กฐ ํ์
์์ ํ์
์ ํน์ง
: ๋ถ๋ณ์ฑ ์ด๋ผ๋ ํน์ง์ ๊ฐ์ง๋ค.
์ฐธ์กฐ ํ์
์ ํน์ง
: ๊ฐ๋ณ์ฑ ์ด๋ผ๋ ํน์ง์ ๊ฐ์ง๋ค.
๋ฉ๋ชจ๋ฆฌ์ ์ฃผ์๋ ์ฐธ์กฐ๋ง ํด์ฌ ๋ฟ ์ฃผ์๊ฐ ํ ๋น ๋๋ ๊ฒ์ด ์๋๋ค. ๋ฐ๋ผ์ ๋ณํ๊ฐ ๊ฐ๋ฅํ ๊ฒ ์ด๋ค.
์์ฑํ ์กฐ๊ฑด์ด ์ฐธ์ผ๊ฒฝ์ฐ ์ง์ ํ ์ฝ๋๋ฅผ ์ํํ๋๋ก ํ๋ ๊ธฐ๋ฅ
if
๋ฌธ์ ํน์ ์กฐ๊ฑด์ด ์ฐธ์ผ๋ ๋ช
๋ น๋ฌธ์ ์คํ ํ๋ฉฐ, ๊ฑฐ์ง์ผ๊ฒฝ์ฐ ์๋ else
๋ฌธ์ ์คํ ํ๊ฒ ๋๋ค.๋ฐ๋ณต์ ์ธ ์ฝ๋์ ์์ ํ๊ธฐ์ ์ผ๋ก ์์ถํ๊ณ ๋ฐ๋ณต์ ์ธ ์ผ์ ์ํ์ ํจ์จ์ ์ผ๋ก ์ฒ๋ฆฌ ํ ์ ์๋๋ก ๋์์ค๋ค.
for(์ต์ด์; ์กฐ๊ฑด์; ์ฆ๊ฐ๋ฌธ){ // ๋ฐ๋ณต์ ์ํํ ์ฝ๋ }
์ต์ด์ while( ์กฐ๊ฑด์ ){ // ๋ฐ๋ณต์ ์ํํ ์ฝ๋ ์ฆ๊ฐ์ }
๋ฐฐ์ด
์ ์ฃผ๋ก ์ฌ์ฉconst arr = [1, 2, 3, 4, 5] for(let el of arr) { console.log(el) }
๊ฐ์ฒด
์์ ์ฌ์ฉconst obj = { name : "otter", gender : "male" } for(let key in obj) { console.log(key) }
ํจ์
, ๋ณ์
๋ ์ ์๋์ด ์๋ ์์ญ ์์์๋ง ์กด์ฌํ๋ค.๋ฐ์ผ๋ก ๊ฑด๋ค์ฃผ๋ ๊ฒ
๋ฟ๋ง ์๋๋ผ, ์ธ๋ถ์ ๋ฐ์ดํฐ
๋ฅผ ๋ฐ์์จ ํ ๊ฐ๊ณต, ํน์ ๋ก์ง์ ์ํํ๋ ๊ฒ๋ ๊ฐ๋ฅํ๋ค.์ ๋ฌ์ธ์
๋ฅผ ๊ฑด๋ค์ค ์ ์๋ค.์ ๋ฌ์ธ์
1, 2๊ฐ ๋งค๊ฐ๋ณ์
์ธ one๊ณผ two์ ๋ด๊ธฐ๊ฒ ๋๋ค.๋ด์์ฃผ๋ ์์
์ ์ํด์ ๋งค๊ฐ๋ณ์์ ๋ด๊ธธ ๊ฐ ์ด ์ ํด์ง๋ค.์น ๋ธ๋ผ์ฐ์ ๋ Web Storage
๋ผ๊ณ ํ๋ ์ ์ฅ์๋ฅผ ์ ๊ณต ํ๋๋ฐ, seesionStorage
์ localStorage
๋ฅผ ํ์ฉํ ์ ์๋ค.
์ฐ๋ฆฌ๋ document
๋ผ๊ณ ํ๋ ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํด์์ HTML
๋ฌธ์๋ฅผ ์กฐ์ ํ ์ ์๋ค.
๊ทธ๋ฐ๋ฐ ์ฌ์ค ์ฐ๋ฆฌ๋ HTML
์์๋ค์ ์ง์ ์ ์ผ๋ก ์กฐ์ํ๋ ๊ฒ์ด ์๋๋ค.
์กฐ๊ธ ๋ ์ ํํ๊ฒ ์ด์ผ๊ธฐ ํ์๋ฉด, ์ฐ๋ฆฌ๋ DOM Element
๋ฅผ ์กฐ์ํ ๊ฒ์ด๋ค.
๋ธ๋ผ์ฐ์ ๋ HTML ๋ฌธ์๋ฅผ ํ์ฑํ๋ ๊ณผ์ ์์ DOM์ด๋ผ๋ ํธ๋ฆฌ๊ตฌ์กฐ
ํํ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ฒ ๋๋ค.
DOM ํธ๋ฆฌ ๊ตฌ์กฐ
๋ ๊ฐ๋จํ๊ฒ ํํํ์๋ฉด ์๋์ ๊ฐ๋ค. ๊ฐ ์์๋ค์ ๋
ธ๋(Node)
window.event
๋ฅผ ํตํด window ๊ฐ์ฒด ๋ด์ event
์์ฑ์ผ๋ก ์ ๊ทผํ ์ ์๋ค.Event
๋, DOM ๋ด์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ์๋ฏธํ๋ฉฐ, ํค๋ณด๋ ๋ฒํผ์ ๋๋ฅด๊ฑฐ๋ ๋ง์ฐ์ค๋ฅผ ํด๋ฆญ ํ๋ ๋ฑ, ์ฌ์ฉ์๊ฐ ์ทจํ๋ ์ก์
์ ๋งํ๋ค.์ ์ญ ์ค์ฝํ
: x๋ ์ง์ญ ์ค์ฝํ์์ ์ฐธ์กฐ๋ ์ ์๋ค.์ง์ญ ์ค์ฝํ
: y๋ ์ ์ญ ์ค์ฝํ์์ ์ฐธ์กฐ๋ ์ ์๋ค.if๋ฌธ
, for๋ฌธ
, while๋ฌธ
๋ฑ ์ค๊ดํธ๋ฅผ ์ฌ์ฉํด์ ์ฝ๋ ๋ธ๋ก์ ์์ฑํ๋ ํ๊ฒฝ์์ ์์ฑ๐ ์๋ฐ์คํฌ๋ฆฝํธ ๋๋ฒ๊น ์์ํ๊ธฐ
let
๊ณผ const
๋ ์ ์ธ ์ฝ๋๋ฅผ ๋ง๋๊ธฐ ์ด์ ์ ์ฐธ์กฐ๋ฅผ ์๋ํ๋ฉด ์๋ฌ๋ฅผ ๋ฐ์์ํค๋ ์ด์ ๋ TDZ(Temporal Dead Zone)
๋๋ฌธ์ด๋ค.let
๊ณผ const
๋ ์ ์ธ ๋จ๊ณ์ ์ด๊ธฐํ ๋จ๊ณ๊ฐ ๋ถ๋ฆฌ๋์ด ์คํ๋๋๋ฐ, ์ด๊ธฐํ ๋จ๊ณ๋ฅผ ๊ฑฐ์น๊ธฐ ์ ์, ์ฆ ํด๋น ๊ณต๊ฐ์์ ๋จธ๋ฌด๋ฅด๋ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ค ์๋ํ๋ฉด ์ฐธ์กฐ ์๋ฌ(Reference Error)๋ฅผ ๋ฐ์์ํค๊ฒ ๋๋ค.var
ํค์๋๋ ์กฐ๊ธ ๋ค๋ฅด๊ฒ ๋์ํฉ๋๋ค. ์ ์ธ๋จ๊ณ์ ์ด๊ธฐํ ๋จ๊ณ๊ฐ ํจ๊ป ์ด๋ฃจ์ด์ง๋ค.API
: ์ด๋ ํ ํ๋ก๊ทธ๋จ์์ ์ ๊ณตํ๋ ๊ธฐ๋ฅ์ ์ฌ์ฉ์๊ฐ ํ์ฉํ ์ ์๋๋ก ๋ง๋ค์ด ๋ ์ธํฐํ์ด์ค๋ค.
API ๋ช
์ธ์
: ๋ฉ๋ดํ
์์ฒญ(Request)
: ํ๋ก๊ทธ๋จ์๊ฒ ์ด๋ ํ ๊ธฐ๋ฅ์ ์ฌ์ฉํ๊ฒ ๋ค ๋ผ๊ณ ์ ๋ฌํ๋ ํ์
ํด๋ผ์ด์ธํธ(Client)
: ์์ฒญ์ ์ ๋ฌํ๋ ์ฌ๋
์๋ต(Response)
: ์ฐ๋ฆฌ๊ฐ ๋๋ ค ๋ฐ๊ฒ ๋๋ ์์
API์ ๊ฐ์ด ๋ค๋ฅธ ์๋ฒ์ ํต์ ์ ํ ๋๋ ํน์ ํ ๊ท์น์ ๋ง์ถฐ ๊ทธ ํต์ ์ด ์ด๋ฃจ์ด์ ธ์ผ ํ๋ค.
HTTP
: Hyper Text Transfer Protocol์ ์ฝ์
๋๊ธฐ
: ํ๋์ ์์
์ด ์ข
๋ฃ๋ ๋๊น์ง ๋ค์ ๋์์ ๋๊ธฐํ๋ ์คํ ๋ฐฉ์
๋น๋๊ธฐ
: ํ๋์ ์์
์ด ์งํ๋จ๊ณผ ๋์์ ๋ ๋ค๋ฅธ ์์
๋ ํจ๊ป ์งํ๋๋ ์คํ ๋ฐฉ์
JavaScript์ ์คํ ํ๊ฒฝ ๋ด๋ถ์๋ call stack
๊ณผ callback queue
๋ผ๊ณ ํ๋ ์์ญ์ด ์กด์ฌํ๋ค.
1.
๋จผ์ ๊ธฐ๋ณธ์ ์ธ ํจ์๋ค์ ๋ชจ๋ call stack์ ์๋๋ค.
2.
๋น๋๊ธฐ ํจ์(Web APIs ํฌํจ)๋ค์ ๋ชจ๋ callback queue์ ์์ด๊ฒ ๋๋ค.
3.
call stack์ ์์ธ ๊ธฐ๋ณธ ํจ์๋ค์ ๋จผ์ ๋ด๊ธด ํจ์๋ค์ด ์์ ์์ธ ํจ์๋ค์ ์ข ๋ฃ๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ฒ ๋๋ค.
4.
callback queue์ ์์ธ ๋น๋๊ธฐ ํจ์๋ค์ call stack์ด ๋น์์ ธ ์๋ค๋ฉด, ๊ทธ ๋ call stack์ผ๋ก ํ๋์ฉ ์ฎ๊ฒจ์ง๋ค.
Promise
: ํ์ฌ๋ ์ป์ ์ ์์ง๋ง ์ถํ ์์
์ด ์๋ฃ๋๋ฉด ๋ฐ์์ฌ ์ ์๋ ๋ฐ์ดํฐ์ ๋ํ ์ ๊ทผ ์๋จ์ ์ญํ
then()
: fetch()
๋ฅผ ์ฌ์ฉํด์ฃผ๋ฉด JavaScript์์ ๋ฐ๋ก ํต์ ์ ์ํํ ์ ์๋ค. ํ์ง๋ง ์์ ๊ฐ์ด ์์ฑํ๋ฉด ์ ์์ ์ธ ์๋ต์ ๋ฐ์ง ๋ชปํ๋ค๋ฉด ์๋ต์ด ๋์์ฌ ๋ ๊น์ง ๊ธฐ๋ค๋ ค ์ฃผ์ด์ผ ํ๋๋ฐ, ์ด๋ then()
๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
catch()
: then()
๋ฉ์๋ ๋ด์์ ๋ก์ง์ ์ํํ๋ค๊ฐ ์๋ฌ๋ฅผ ๋ง๋๋ค๋ฉด ์ฐ๋ฆฌ๋ catch()
๋ฉ์๋๋ก ๊ทธ ๋ถ๊ธฐ๋ฅผ ๋๋ ์ค ์ ์๋ค.
๐ ๊ตฌ์กฐ ๋ถํด ํ ๋น(๋ฐฐ์ด / ๊ฐ์ฒด)
const arr = [ 1, 2, 3, 4, 5 ]; const newArr = [ ...arr ];
const obj = { name: "otter", gender: "male" } const newObj = { ...obj }
const obj = { name: "otter", gender: "male", favoriteFood: { first: "sushi", second: "hamburger" } } const copy = JSON.stringify(obj) console.log(copy) // {"name":"otter","gender":"male","favoriteFood":{"first":"sushi","second":"hamburger"}}