๐ Front-End/JavaScript
ํจ์ ํ๋ก๊ทธ๋จ ์์์ ๊ฐ๊ฐ์ ์์ ๊ธฐ๋ฅ๋ค์ ์ํํ๋ ๊ฒ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅ ํฉ๋๋ค. ํ๋์ ํจ์๋ ํ ๊ฐ์ง์ ์ผ๋ง ํ๋๋ก ๋ง๋๋ ๊ฒ์ด ์ข์ต๋๋ค. ํจ์์ ์ด๋ฆ์ ๋ณด๊ณ ํจ์์ ๊ธฐ๋ฅ์ ์ ์ ์์ด์ผ ํฉ๋๋ค. // ๊ธฐ๋ณธํ function ํจ์๋ช
(){ ์ฝ๋ }; ํจ์๋ช
() // ํธ์ถ // ๋งค๊ฐ๋ณ์ function ํจ์๋ช
(๋งค๊ฐ๋ณ์){ ์ฝ๋ }; ํจ์๋ช
(๋งค๊ฐ๋ณ์) // ํธ์ถ ์ฝ๋ฐฑํจ์ ? ํจ์ ์์ ํจ์๋ฅผ ์ ๋ฌํด์ ์ํฉ์ ๋ง๊ฒ ํจ์๋ฅผ ๋ถ๋ฅด๋ ๊ฒ ์ฆ, ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)๋ก ํจ์๋ฅผ ์ ๋ฌํ์ฌ ํจ์์ ๋ด๋ถ์์ ์คํ๋๋ ํจ์๋ฅผ ์ฝ๋ฐฑํจ์๋ผ ํฉ๋๋ค. const printYes = function () { console.log('yes') } const printNo = function print() { console.log('no'..
๐ Front-End/JavaScript
์ฒซ ๋ฒ์งธ ์ฐจ์ด๋ ๋ฌธ๋ฒ์ ์ฐจ์ด ์
๋๋ค. ํจ์ ์ ์ธ๋ฌธ: function ํจ์์ด๋ฆ() { ... } ํจ์ ํํ์: const func = function () { ... } ๋ ๋ฒ์งธ ์ฐจ์ด๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ์ธ์ ํจ์๋ฅผ ํธ์ถํ๋์ง ์
๋๋ค. -> ํธ์ด์คํ
์ ์ํฅ์ ๋ฐ๋์ง ํจ์ ํํ์์ ์ค์ ์คํ ํ๋ฆ ์ด ํด๋น ํจ์์ ๋๋ฌํ์ ๋ ํจ์๋ฅผ ์์ฑ ํฉ๋๋ค. ๋ฐ๋ผ์ ์คํ ํ๋ฆ์ด ํจ์์ ๋๋ฌํ์ ๋ ๋ถํฐ ํด๋น ํจ์๋ฅผ ํธ์ถ ํ ์ ์์ต๋๋ค. ํจ์ ์ ์ธ๋ฌธ์ ์ค์ ์คํ ํ๋ฆ์ด ํจ์ ์ ์ธ๋ฌธ์ด ์ ์๋์ด ์๋ ๋ถ๋ถ์ ๋๋ฌํ๊ธฐ ์ ์๋ ํจ์๋ฅผ ํธ์ถ ํ ์ ์์ต๋๋ค. ์ด๋ ํธ์ด์คํ
์ ์ํฅ์ ๋ฐ์ต๋๋ค. ์์ // ์คํ ์ logMessage(); sumNumbers(); function logMessage() { return 'work..
๐ Front-End/JavaScript
์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋ณ์์ ํจ์์ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ธ ์ ์ ๋ฏธ๋ฆฌ ํ ๋นํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. ์ฆ, ์ฝ๋๊ฐ ์คํํ๊ธฐ ์ ๋ณ์์ ์ธ/ํจ์์ ์ธ ์ด ํด๋น ์ค์ฝํ์ ์ต์๋จ์ผ๋ก ๋์ด ์ฌ๋ ค์ง๋ ๊ฒ๊ฐ์ ํ์์ ๋งํฉ๋๋ค. ํธ์ด์คํ
์ ์ค์ฝ๋ ๋จ์๋ก ๋ฐ์ ํฉ๋๋ค. environmentRecord ๊ณผ hoisting์ ์ฐ๊ด environmentRecord ๋ ์คํ ์ปจํ
์คํธ ๊ฐ์ฒด๋ ํ์ฑํ๋๋ ์์ ์ VariableEnvironment, LexicalEnviornment ํ๊ฒฝ์ ์ํฉ๋๋ค. environmentRecord ๋ ๋ณ์๋ช
๋ง ๋์ด์ฌ๋ฆฌ๊ณ ํ ๋น ๊ณผ์ ์ ๊ทธ๋๋ก ๋จ๊ฒจ๋๊ฒ ๋ฉ๋๋ค. environmentRecord ๋ ํ์ฌ ์ปจํ
์คํธ์ ๊ด๋ จ๋ ์ฝ๋์ ์๋ณ์ ์ ๋ณด๋ค์ด ์ ์ฅ ๋ฉ๋๋ค. ๋งค๊ฐ๋ณ์ ์๋ณ์ ํจ์ ์์ฒด ํจ์ ๋ด๋ถ์ ์๋ณ์ hoisti..
๐ Front-End/JavaScript
์ถ์์ ์ธ ๊ฐ๋
, ์คํํ ์ฝ๋์ ์ ๊ณตํ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์๋์ ๊ฐ์ฒด Stack, Queue Stack: LIFO (Last In First Out) Queue: FIFO (First In First Out) Stack ์์๋ ๊ฐ์ฅ ๋ง์ง๋ง์ ๋ค์ด์จ d,c,b,a ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ผ ์ ์์ต๋๋ค. Queue ์์๋ ์ ์ผ ๋จผ์ ๋ค์ด์จ a,b,c,d ์์ผ๋ก ๋ฐ์ดํฐ๋ฅผ ๊บผ๋ผ ์ ์์ต๋๋ค. ์คํ ์ปจํ์คํธ์ ๋์์, ๋์ผํ ํ๊ฒฝ์ ์๋ ์ฝ๋๋ค์ ์คํํ ๋ ํ์ํ ํ๊ฒฝ์ ๋ณด๋ฅผ ๋ชจ์ ์ปจํ
์คํธ๋ฅผ ๊ตฌ์ฑํ๊ณ , ์ด๋ฅผ ์ฝ ์คํ์ ์์๋์ ๋ค, ๊ฐ์ฅ ์์ ์๋ ์ปจํ
์คํธ์ ๊ด๋ จ ์๋ ์ฝ๋๋ค์ ์คํํ๋ ๊ฒ์ผ๋ก ์ฝ๋์ ํ๊ฒฝ๊ณผ ์์๋ฅผ ๋ณด์ฅํฉ๋๋ค. ์คํ ์ปจํ
์คํธ์ ๊ตฌ์ฑ ๋ฐฉ๋ฒ ์ ์ญ ๊ณต๊ฐ → ์๋ ์คํ eval() ํจ์ → ์ฌ์ฉ์ ๊ถ์ฅํ์ง ์์ ..
๐ Front-End/JavaScript
์ปดํจํฐ์ ๋ณ์์ ์ ์ฒด๋ฅผ ์๋ฆฌ๊ณ , ๊ณต๊ฐ์ ํ๋ณดํ๊ณ , ์ํ๋ ๊ฐ์ ์ฃผ๋ ๊ณผ์ ์ด ๋ณ์ ์ ์ธ, ์ด๊ธฐํ, ํ ๋น ๊ณผ์ ์
๋๋ค. ์ ์ธ ์ ์ธ ๋จ๊ณ์์๋ const, let, var ์ค ํ์ํ ์ ์ธ ํค์๋๋ฅผ ์ฌ์ฉ ํฉ๋๋ค. ๋ณ์๋ช
์ ์คํ ์ปจํ
์คํธ์ ๋ณ์ ๊ฐ์ฒด์ ๋ฑ๋กํ์ฌ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ๋ณ์์ ์กด์ฌ๋ฅผ ์๋ฆฝ๋๋ค. ์ด๊ธฐํ ์ ์ธ ํค์๋๋ฅผ ํตํด ์ด๋ฆ์ด ์ ํด์ง ๋ณ์์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ํ๋ณดํ๊ณ , ์๋ฌต์ ์ผ๋ก undefined ๋ฅผ ํ ๋น ํฉ๋๋ค. ๋ํ ์ ์ธ ํค์๋์ ๋ฐ๋ผ์ ๊ณผ์ ์ด ๋ฌ๋ผ์ง๋๋ค. var ์ ์ธ๊ณผ ์ด๊ธฐํ๊ฐ ํจ๊ป ์ผ์ด๋๊ธฐ ๋๋ฌธ์, ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ฐ๊ณ ์๋ ๋ณ์๋ก ๊ฐ์ฃผ๋์ด ์ ์ธ๋ฌธ ์์์๋ ํด๋น ๋ณ์๋ ์ฐธ์กฐ๊ฐ ๊ฐ๋ฅํ๊ฒ ๋ฉ๋๋ค. var ๋ก ์ ์ธํ ๋ณ์๋ ์คํ ์ปจํ
์คํธ ์ต์์๋ก ์ด๋ํ๊ฒ ๋๊ณ , var ํค์๋๋ก ์ ์ธํ ๋ณ์๊ฐ..
๐ Front-End/JavaScript
์๋ฐ์คํฌ๋ฆฝํธ์ ๋ณ์ ๋ฐ ์์ ์ ์ธ ํค์๋ ์
๋๋ค. var ์ด๊ธฐ ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋ณ์ ์ ์ธ์ var ๋ง์ ์ฌ์ฉ ํ์ต๋๋ค. var ํน์ง ํจ์ ๋ ๋ฒจ ์ค์ฝํ(Function Level Scope) ๋๋ ์ ์ญ ์ค์ฝํ var a = "a"; function example() { var b = "b"; console.log(a); // a ์ ์ญ๋ณ์. ์ถ๋ ฅ๊ฐ๋ฅ. if (true) { var c = "c"; console.log(b); // b - ํด๋น ํจ์ ๋ด ์ ์ธํ ๋ณ์. ์ถ๋ ฅ ๊ฐ๋ฅ. } console.log(c); // c - ํด๋น ํจ์ ๋ด ์ ์ธํ ๋ณ์. ์ถ๋ ฅ ๊ฐ๋ฅ. } example(); // var๋ ๋ณ์์ ์ค๋ณต ์ ์ธ ๊ฐ๋ฅ var name = "kim"; console.log(name); // kim var na..
๐ Front-End/JavaScript
ํ๋์ ๊ฐ์ ์ ์ฅํ๊ธฐ ์ํด ํ๋ณดํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ ์์ฒด ๋๋ ๊ทธ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์๋ณํ๊ธฐ ์ํด ๋ถํ์ง ์ด๋ฆ ์๋ณ์(Identifier) ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ์ ์ฅ๋ ๊ฐ์ ์๋ณํ ์ ์๋ ๊ณ ์ ํ ์ด๋ฆ ์ด๋ค ๊ฐ์ ๊ตฌ๋ณํด์ ์๋ณํ ์ ์๋ ๊ณ ์ ํ ์ด๋ฆ ๋ณ์์ ์ด๋ฆ ์ ์๋ณ์๋ผ๊ณ ํํํ๊ธฐ๋ ํฉ๋๋ค. ๋ณ์๋ช
๋ค์ด๋ฐ ๊ท์น ๋ณ์๋ช
์๋ ์ค์ง ๋ฌธ์์ ์ซ์, ๊ทธ๋ฆฌ๊ณ ๊ธฐํธ $์ _๋ง ๋ค์ด๊ฐ ์ ์์ต๋๋ค. ์ฒซ ๊ธ์๋ ์ซ์๊ฐ ๋ ์ ์์ต๋๋ค. ์์ฝ์ด๋ ์๋ณ์๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. ES6๋ถํฐ๋ ์ ๋์ฝ๋๋ฅผ ์ง์ ํฉ๋๋ค. ๋๋ฌธ์์ ์๋ฌธ์๋ฅผ ๊ตฌ๋ณ ํฉ๋๋ค. ์นด๋ฉ ํ๊ธฐ๋ฒ(camelCase) ์ฌ๋ฌ ๋จ์ด๋ฅผ ์กฐํฉํ์ฌ ๋ณ์๋ช
์ ๋ง๋ค ๋ ์ฃผ๋ก ์ฌ์ฉ ํฉ๋๋ค. ์ฒซ ๋จ์ด๋ฅผ ์ ์ธํ ๊ฐ ๋จ์ด์ ์ฒซ ๊ธ์๋ฅผ ๋๋ฌธ์๋ก ์์ฑํฉ๋๋ค. let myVeryLongName ๋ฐ๋์ง..
๐ Front-End/JavaScript
๋ฏธ๊ตญ์ ๋ท์ค์ผ์ดํ ์ปค๋ฎค๋์ผ์ด์
์ฆ์ฌ(Netscape Communications)๊ฐ ๊ฐ๋ฐํ ์น ๋ธ๋ผ์ฐ์ ์์ ์คํํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด ์
๋๋ค. JavaScript ? HTML๋ก๋ ์น์ ๋ด์ฉ์ ์์ฑํ๊ณ , CSS๋ก๋ ์น์ ๋์์ธํ๋ฉฐ, ์๋ฐ์คํฌ๋ฆฝํธ๋ก๋ ์น์ ๋์์ ๊ตฌํํ ์ ์์ต๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ฃผ๋ก ์น ๋ธ๋ผ์ฐ์ ์์ ์ฌ์ฉ๋๊ฑฐ๋, Node.js๊ฐ์ด ์๋ฒ ์ธก ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์์๋ ์ฌ์ฉํ ์ ์์ต๋๋ค. JavaScript ์ ํน์ง ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ฐ์ฒด ๊ธฐ๋ฐ์ ์คํฌ๋ฆฝํธ ์ธ์ด ์
๋๋ค. ์คํฌ๋ฆฝํธ๋ ์นํ์ด์ง์ HTML ์์ ์์ฑํ ์ ์๋๋ฐ, ์นํ์ด์ง๋ฅผ ๋ถ๋ฌ์ฌ ๋ ์คํฌ๋ฆฝํธ๊ฐ ์๋์ผ๋ก ์คํ๋ฉ๋๋ค. ์๋ฐ์คํฌ๋ฆฝํธ๋ ๋์ ํ์
์ธ์ด์ด๋ฉฐ, ํ์
์ ๋ช
์ํ ํ์๊ฐ ์๋ ์ธํฐํ๋ฆฌ์ด ์ธ์ด ์
๋๋ค. JavaScript ์ ์ญํ HTML ํ์ด์ง ..