[JS] ES6
2022. 7. 24. 23:52
๐ฅ Front-End/JavaScript
ES(ECMA Script) ECMAScript(ES5๋ ES2015์ ES๋ ECMAScript์ ์ค์๋ง์ด๋ค.)๋ Ecma ์ธํฐ๋ด์
๋์์ ์ ์ํ ECMA-262 ๊ธฐ์ ๊ท๊ฒฉ์ ์ ์๋ ํ์ค ์คํฌ๋ฆฝํธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์
๋๋ค. ๊ฐ๋จํ ๋งํ์๋ฉด ํ์คํ๋ ์คํฌ๋ฆฝํธ ์ธ์ด์
๋๋ค. ๋์ค์ ์ผ๋ก ์ ๋ช
ํ ES6์ ๊ฒฝ์ฐ ES5 ์ดํ ๋ช
์ธ์์ ๋ฌธ์ ๊ฐ ๋์๋ ๋ถ๋ถ๋ค์ด ํด๊ฒฐ๋์๊ณ , ๊ธฐ์กด ์ฝ๋๋ฅผ ๋ ๊ฐ๊ฒฐํ๊ฒ ์์ฑํ ์ ์๋ ์๋ก์ด ๋ฌธ๋ฒ์ด ์ถ๊ฐ๋๋ฉด์ ๋ ๊ฐ๋
์ฑ ๋ฐ ์ ์ง ๋ณด์์ฑ์ด ํฅ์๋์์ต๋๋ค. ๊ทธ ๋์ ์น์์ ์ฌ์ฉํ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์ ๋ช
๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค(lodash, React, Vue ๋ฑ)์ ๊ฐ๋ฐ ํ๊ฒฝ๋ ES6๋ก ๋ฐ๋์์ต๋๋ค. ๋ฐ๋ผ์ ์ต์ ์๋ฐ์คํฌ๋ฆฝํธ ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ค๋ ES6๋ฅผ ์ฌ์ฉํ ๋ ํจ์ฌ ํธ๋ฆฌํ๊ฒ ์ฌ์ฉํ ์ ์์ต๋๋ค. ES6์์ ์๋ก ์ถ..
[JS] TDZ
2022. 7. 21. 02:08
๐ฅ Front-End/JavaScript
TDZ(Temporal Dead Zone)๋ ๋ฌด์์ธ๊ฐ? const ๋ณ์๋ฅผ ์ ์ธํ๊ณ ์ด๊ธฐํํ๋ฉด ๋ณ์์ ์ ๊ทผํ ์ ์์ต๋๋ค. ์์ํ๋๋ก ๋์ํฉ๋๋ค. const white = '#FFFFFF'; white; // => '#FFFFFF' ์ด๋ฒ์๋ ์ ์ธ ์ ์ white ๋ณ์์ ์ ๊ทผํด๋ณด๋๋ก ํ๊ฒ ์ต๋๋ค. white; // throws `ReferenceError` const white = '#FFFFFF'; white const white = '#FFFFFF' ๊ตฌ๋ฌธ ์ ์ค๊น์ง, white ๋ณ์๋ TDZ์ ์์ต๋๋ค. TDZ์ ์๋ white ๋ณ์์ ์ ๊ทผํ๊ฒ ๋๋ฉด , ReferenceError: Cannot access 'white' before initialization ์๋ฐ์คํฌ๋ฆฝํธ ์๋ฌ๊ฐ ๋ฐ์ํฉ๋๋ค. TDZ์ ์ํฅ์..
[JS] ์คํ ์ปจํ
์คํธ, ํธ์ด์คํ
, ํจ์ ์ ์ธ๋ฌธ๊ณผ ํจ์ ํํ์
2022. 7. 21. 01:40
๐ฅ Front-End/JavaScript
์คํ ์ปจํ
์คํธ(Execution Context) ์คํ ์ปจํ
์คํธ๋ ์คํํ ์ฝ๋์ ์ ๊ณตํ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์๋์ ๊ฐ์ฒด์
๋๋ค. ๋์ผํ ํ๊ฒฝ์ ์๋ ์ฝ๋๋ค์ ์คํํ ๋ ํ์ํ ํ๊ฒฝ ์ ๋ณด๋ค์ ๋ชจ์ ์ปจํ
์คํธ๋ฅผ ๊ตฌ์ฑํ๊ณ ์ด๋ฅผ ์ฝ์คํ์ ์์ ์ฌ๋ฆฝ๋๋ค. ์คํ ์ปจํ
์คํธ๋ ์ ์ญ๊ณต๊ฐ์ด ์์ฑ๋ ๋, ํจ์๊ฐ ํธ์ถ๋ ๋ ์์ฑ๋ฉ๋๋ค. ์คํ ์ปจํ
์คํธ์ ์ฝ ์คํ ์์ ์ฝ๋ ์คํ์, ์ ์ญ๊ณต๊ฐ์ด ํ์ฑํ๋๋ฉด์ ์ ์ญ ์ปจํ
์คํธ๊ฐ ์์ฑ๋๊ณ ํจ์ ํธ์ถ ์์๋๋ก ์ฝ์คํ์ ์คํ ์ปจํ
์คํธ๊ฐ ์์ด๋๊ฒ์ ํ์ธํ ์ ์์ต๋๋ค. ์คํ ์ปจํ
์คํธ๊ฐ ๋ด๊ณ ์๋ ์ ๋ณด Variable Environment environmentRecord (snapshot) : ํ์ฌ ์ปจํ
์คํธ ๋ด์ ์๋ณ์๋ค์ ๋ํ ์ ๋ณด outerEnvironmentReference (snapshot) :..
[JS] ํด๋ก์ (Closure)
2022. 7. 21. 00:49
๐ฅ Front-End/JavaScript
ํด๋ก์ ์ ์๋ฏธ ๋ฐ ์๋ฆฌ ์ดํด ์์์ ์คํ์ปจํ
์คํธ์ ๋ํด ๋ฐฐ์ด ์ง์์ ๋ฐํ์ผ๋ก ํด๋ก์ ๋ฅผ ์ ์ํด๋ณธ๋ค๋ฉด, ํด๋ก์ ๋ ์ธ๋ถ ํจ์์ ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ๋ด๋ถ ํจ์๋ฅผ ์ธ๋ถ๋ก ์ ๋ฌํ ๋ ์ธ๋ถ ํจ์์ ์คํ ์ปจํ
์คํธ๊ฐ ์ข
๋ฃ๋ ํ์๋ ์ธ๋ถ ํจ์๋ฅผ ์ฐธ์กฐํ ์ ์๋ ํ์์ด๋ผ๊ณ ์๊ฐํฉ๋๋ค. ์ ๊ฐ ์ ํด๋ก์ ๋ฅผ ์ ์ํ๋์ง ์์ ๋ฅผ ํตํด ์ดํด๋ณด๊ฒ ์ต๋๋ค. ์ฐ์ ์ธ๋ถ ํจ์์์ ๋ณ์๋ฅผ ์ ์ธํ๊ณ ๋ด๋ถ ํจ์์์ ํด๋น ๋ณ์๋ฅผ ์ฐธ์กฐํ๋ ํํ์ ๊ฐ๋จํ ์ฝ๋๋ฅผ ์์ฑํด๋ณด๊ฒ ์ต๋๋ค. var outer = function () { var a = 1; var inner = function () { console.log(++a); }; inner(); }; outer(); outer ํจ์์์ ๋ณ์ a๋ฅผ ์ ์ธํ๊ณ , outer์ ๋ด๋ถ ํจ์์ธ inner ํจ์์์ a์ ๊ฐ..
[JS] ์ค์ฝํ(Scope)
2022. 7. 21. 00:32
๐ฅ Front-End/JavaScript
์ค์ฝํ ์ค์ฝํ(Scope, ์ ํจ๋ฒ์)๋ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํฌํจํ ๋ชจ๋ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด์ ๊ธฐ๋ณธ์ ์ธ ๊ฐ๋
์ผ๋ก ํ์คํ ์ดํด๊ฐ ํ์ํ๋ค. ๋จผ์ ์๋ ์์ ์ ์คํ ๊ฒฐ๊ณผ์ ๋ํด ์๊ฐํด๋ณด์. var x = 'global'; function foo () { var x = 'function scope'; console.log(x); } foo(); // ? console.log(x); // ? ์ด๋ฆ์ด ๊ฐ์ ๋ณ์ x๊ฐ ์ค๋ณต ์ ์ธ๋์๋ค. ์ ์ญ์์ ๋ณ์ x๋ฅผ ์ฐธ์กฐํ ๋, ๊ทธ๋ฆฌ๊ณ ํจ์ foo ๋ด๋ถ์์ ๋ณ์ x๋ฅผ ์ฐธ์กฐํ ๋ ์ด๋ฆ์ด ์ค๋ณต๋ 2๊ฐ์ ๋ณ์ ์ค ์ด๋ค ๋ณ์๋ฅผ ์ฐธ์กฐํด์ผ ํ๋๊ฐ? ์๋ฐ์คํฌ๋ฆฝํธ๋ ์ด๋ป๊ฒ ๋ณ์๋ฅผ ์๋ณํ๋ ๊ฒ์ผ๊น? ์ค์ฝํ๋ ์ฐธ์กฐ ๋์ ์๋ณ์(identifier, ๋ณ์, ํจ์์ ์ด๋ฆ๊ณผ ๊ฐ์ด ์ด๋ค ๋์์ ๋ค๋ฅธ ๋์๊ณผ ๊ตฌ๋ถ..
[JS] JavaScript ๊ฐ์ฒด์ ๋ถ๋ณ์ฑ
2022. 7. 20. 22:46
๐ฅ Front-End/JavaScript
๊ธฐ๋ณธํ ๋ฐ์ดํฐ์ ์ฐธ์กฐํ ๋ฐ์ดํฐ ๋ฐ์ดํฐ ํ์
์ ์ข
๋ฅ ์๋ฐ์คํฌ๋ฆฝํธ ๋ฐ์ดํฐ ํ์
์ ๊ธฐ๋ณธํ, ์ฐธ์กฐํ ์ด๋ ๊ฒ ํฌ๊ฒ ๋๊ฐ์ง๋ก ๋ณผ ์ ์์ต๋๋ค. ๊ธฐ๋ณธํ์ ํ ๋น์ด๋ ์ฐ์ฐ์ ๋ณต์ ๋๊ณ ์ฐธ์กฐํ์ ์ฐธ์กฐ๋ฉ๋๋ค. ์๋ฐํ ๋งํ๋ฉด ๋ ๋ชจ๋ ๋ณต์ ๋ฅผ ํ๊ธด ํ์ง๋ง, ๋ค๋ง ๊ธฐ๋ณธํ์ ๊ฐ์ด ๋ด๊ธด ์ฃผ์๊ฐ์ ๋ฐ๋ก ๋ณต์ ํ๋ ๋ฐ๋ฉด ์ฐธ์กฐํ์ ๊ฐ์ด ๋ด๊ธด ์ฃผ์๊ฐ๋ค๋ก ์ด๋ฃจ์ด์ง ๋ฌถ์์ ๊ฐ๋ฆฌํค๋ ์ฃผ์๊ฐ์ ๋ณต์ ํ๋ค๋ ์ ์ด ๋ค๋ฆ
๋๋ค. ๋ถ๋ณ๊ฐ(Immutable Value) ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๋ค์ ๋ชจ๋ ๋ถ๋ณ๊ฐ(immutability์ ๋๋๋ค. ๊ธฐ๋ณธํ์ด ๊ถ๊ธํ์๋ค๋ฉด, [JS] ๋ชจ๋์๋ฐ์คํฌ๋ฆฝํธ Deep Dive - ๋ฐ์ดํฐ ํ์
6์ฅ ๋ฐ์ดํฐ ํ์
(Data Type) ES6๋ถํฐ๋ 7๊ฐ์ ๋ฐ์ดํฐ ํ์
์ ์ ๊ณตํ๋ค. 7๊ฐ์ ๋ฐ์ดํฐ ํ์
์ ์์ ํ์
(Primitive Type)๊ณผ ๊ฐ์ฒด ..
[JS] JavaScript์ ์๋ฃํ๊ณผ JavaScript๋ง์ ํน์ฑ
2022. 7. 19. 23:38
๐ฅ Front-End/JavaScript
๋์จํ ํ์
(loosely typed)์ ๋์ (dynamic) ์ธ์ด JavaScript๋ Java, C, TypeScript ๋ฑ ์๊ฒฉํ ํ์
์ ์ธ์ ํด์ผํ๋ ์ธ์ด์๋ ๋ฌ๋ฆฌ ๋์จํ ํ์
์ ์ง๋๋๋ค. let foo = 42 // foo๊ฐ ์ซ์ foo = 'bar' // foo๊ฐ ์ด์ ๋ฌธ์์ด foo = true // foo๊ฐ ์ด์ ๋ถ๋ฆฌ์ธ ์ด์ฒ๋ผ ๋ณ์์๋ ๋ฐ๋ก ํ์
์ง์ ์ ํด์ฃผ์ง ์์๋ ๋๋ฉฐ, ๊ฐ์ ๋ฐ๋ผ ์๋์ผ๋ก ํ์
์ด ์ง์ ๋ฉ๋๋ค. ์ฆ, JavaScript์ ๋ณ์๋ ์ด๋ค ํน์ ํ์
๊ณผ ์ฐ๊ฒฐ๋์ง ์์ผ๋ฉฐ, ๋ชจ๋ ํ์
์ ๊ฐ์ผ๋ก ํ ๋น(๋ฐ ์ฌํ ๋น) ๊ฐ๋ฅํฉ๋๋ค. JavaScript ํ๋ณํ ์ด์ ์ ์ ๋ฆฌํ ๊ธ์ ์ฐธ์กฐํด์ฃผ์ธ์. [JS] 4. ์์์ ํ๋ณํ, ๋ช
์์ ํ๋ณํ, Nominal, ๊ตฌ์กฐํ, ๋ ํ์ดํ ์คํ์์ค ๊นํ๋ธ ์ฃผ์:..
[JS] JavaScript์ append๋ฅผ ์ด์ฉํ HTML ์์ ์์ฑํ๊ธฐ
2022. 5. 15. 00:16
๐ฅ Front-End/JavaScript
์์ ๊ฐ์ด ํํ์ด์ง ์ํ ๋ชฉ๋ก์ ์์ฑํ๋ค๊ณ ๊ฐ์ ํด๋ณด๊ฒ ์ต๋๋ค. HTML์ ์์๋ค์ ์ง์ ์์ฑํด์ ํ๋์ฝ๋ฉํ ์๋ ์๊ฒ ์ง๋ง, ๋ฐ์ดํฐ๊ฐ ๋ณ๊ฒฝ๋ ๋๋ง๋ค HTML ์์๋ฅผ ๊ณ์ํด์ ์ง์ ์์ ํด์ค์ผํ๋ ๋ฒ๊ฑฐ๋ก์์ด ์๊น๋๋ค. ๋ฐ๋ฉด, ๋ฐฐ์ด๊ณผ JavaScript๋ฅผ ์ด์ฉํ๋ฉด ๋ฐ์ดํฐ๊ฐ ๋ณํ ๋๋ง๋ค ๋ณ๊ฒฝ์ฌํญ์ ์๋์ผ๋ก ๋ฐ์ํ ์ ์์ต๋๋ค. JavaScript๋ฅผ ์ด์ฉํ๋ฉด DOM ๊ฐ์ฒด์ ์ ๊ทผํ์ฌ HTML ์์๋ฅผ ์ง์ ์์ฑ, ์์ , ์ญ์ ํ ์ ์์ต๋๋ค. ์๋์ ๋น์ด์๋ HTML ์์์ธ div ํด๋์ค row์ ์ํ ๋ฆฌ์คํธ๋ฅผ ์ถ๊ฐํด๋ณด๊ฒ ์ต๋๋ค. ์ํ ๋ฆฌ์คํธ๊ฐ ๋ฐฐ์ด์์ ๊ฐ์ฒด ํ์์ผ๋ก ๋ด๊ฒจ์์ต๋๋ค. let products = [ {id: 0, price: 70000, title: "๊ฝ๋ฌด๋ฌ ์ํผ์ค"}, {id: 1, price: 50000, t..