์๋ฐ์คํฌ๋ฆฝํธ
-
๐์๋ฐ์คํฌ๋ฆฝํธ 3 | Lexical Environment, Scope Chain์๋ฐ์คํฌ๋ฆฝํธ 2021. 11. 15. 19:01
function a(){ let b = 10; function c(){ console.log(b); } c(); } a(); console.log(b); ์์ ์ฝ๋๊ฐ ์คํ๋ ๋ ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ด ๋์๊ฐ๋ ๊ณผ์ ์ ๋ค์๊ณผ ๊ฐ๋ค. 1. ๋จผ์ ์ ์ญ ์ค์ฝํ์ ์์นํ๊ณ ์๋ ๋ณ์ a๋ฅผ ๋ด๊ณ , ๋ณ์ a์๋ ์ ์๋์ด์๋ ํจ์๋ฅผ ํ ๋นํ๋ค. 2. ๊ทธ ๋ค์ a ํจ์๊ฐ ํธ์ถ๋๊ณ ์ ์ญ ์ปจํ ์คํธ์์ a๊ฐ ์คํ๋์ด let b = 10 ์ฝ๋๊ฐ ์คํ๋๋ค. 3. ์ด์ call stack memory์ aํจ์๊ฐ ์ ์ฅ๋ ๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์๋ณ์ b์ c๊ฐ callstack์ ์ ์ฅ๋๋ค(b : 10, c : function(){}). 4. ๋ค์ cํจ์๊ฐ ํธ์ถ๋๊ณ console.log(b)๋ฅผ ๋ง๋๋ค. ํ์ฌ ํ์ฑํ ์ํ์ธ c ์ปจํ ์คํธ์์ b๋ฅผ ๊ฒ..
-
๐์๋ฐ์คํฌ๋ฆฝํธ 2 | ์ค์ฝํ(scope), let vs var vs const์๋ฐ์คํฌ๋ฆฝํธ 2021. 11. 15. 17:39
์ค์ฝํ(scope) ์ค์ฝํ๋ ์ฝ๊ฒ ๋งํด ๋ณ์์ ์ ํจ๋ฒ์์ด๋ค. function start(){ for (let i = 0; i < 5; i++){ console.log(i); } console.log(i); } start(); ์์ ์ฝ๋๋ฅผ ์คํ ์์ผ๋ณด๋ฉด for ๋ฌธ ์์ console.log(i) ๋ ์ ์คํ๋ ๋ฐ๋ฉด, for ๋ฌธ ๋ฐ์ console.log(i)๋ i๊ฐ ์ ์๋์ด ์์ง ์๋ค๊ณ ์๋ฌ๊ฐ ๋ฌ ๊ฒ์ ๋ณผ ์ ์๋ค. ๊ทธ ์ด์ ๋ i๊ฐ for ๋ฌธ ์์์๋ง ์ ํจํ ๋ณ์์ด๊ธฐ ๋๋ฌธ์ด๋ค. ์์ ์ค๋ฅ๋ฅผ ํด๊ฒฐํ๊ณ ์ถ๋ค๋ฉด ์๋์ ๊ฐ์ด ๋ณ์๋ฅผ ์์ ๋ฐ์์ ์ ์ธํ์ฌ ์ค์ฝํ์ ๋ฒ์๋ฅผ for๋ฌธ ๋ฐ์ผ๋ก ํ์ฅ์ํฌ ์ ์๋ค. function start(){ let i = 0; for(i = 0; i < 5; i++){ console...
-
๐์๋ฐ์คํฌ๋ฆฝํธ 1 | ๊ธฐ๋ณธํ ๋ฐ์ดํฐ์ ์ฐธ์กฐํ ๋ฐ์ดํฐ์๋ฐ์คํฌ๋ฆฝํธ 2021. 11. 13. 16:09
๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ๊ตฌ๋ถํ๋ ๊ธฐ์ค ๋ฐ์ดํฐ ํ์ ์ ์ข ๋ฅ๋ ํฌ๊ฒ ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ 2๊ฐ์ง๋ก ๋๋๋ค. ๊ธฐ๋ณธํ๊ณผ ์ฐธ์กฐํ์ ๊ตฌ๋ถ ์ง๋ ๊ฐ์ฅ ํฐ ์ ์ ์ค์ ๊ฐ ์ ์ฒด ๋ณต์ฌ vs ์ค์ ๊ฐ์ด ๋ค์ด์๋ ์ฃผ์ ๊ฐ ๋ณต์ฌ์ด๋ค. - ๊ธฐ๋ณธํ (copy value of a) let a = 1; let b = a; a += 10; console.log(a) //11 console.log(b) //1 ์์ ์ฝ๋๋ฅผ ์ดํด๋ณด๋ฉด a์ ๊ฐ์ด ๋ณํ๋๋ผ๋ b์ ๊ฐ์ ๊ทธ๋๋ก ์ธ ๊ฒ์ ๋ณผ ์ ์๋ค. let b = a; ์ฝ๋๋ฅผ ํตํด a๊ฐ ์ ์ฒด๊ฐ ๋ณต์ฌ๋์ด b๋ผ๋ ๋ณ์์ ๋ด๊ฒผ๋ค. a, b๋ ์๋ก ์ํฅ์ ๋ฐ์ง ์๊ณ ๋ ๋ฆฝ์ ์ผ๋ก ์กด์ฌํ๋ ๊ฒ์ ๋ณผ ์ ์๋ค. ๊ธฐ๋ณธํ ๋ฐ์ดํฐ๊ฐ ์ ์ฅ๋ ๋๋ ์๋์ ๊ฐ์ ์์๋ก ์ ์ฅ๋๋ค. 1. ๋ณ์ ์์ญ์์ ๋น ๊ณต๊ฐ(@1003 : ์์์ ..
-
๐ ๋๊ธฐ์ ๋น๋๊ธฐ | Promises, callbacks, async/await์๋ฐ์คํฌ๋ฆฝํธ 2020. 8. 10. 22:48
๋๊ธฐ(Synchronous) vs ๋น๋๊ธฐ(Asynchronous) ์นดํ ์ ์์ด๋ผ๊ณ ์๊ฐํด๋ณด์. ์๋์๊ฒ ๋ณต์ญ์ ์์ด์คํฐ๋ฅผ ์ฃผ๋ฌธ๋ฐ์๋ค. ๊ทธ๋ผ ์๋์ ๊ฐ์ด 6 ๋จ๊ณ๋ฅผ ๊ฑฐ์ณ ์๋์๊ฒ ์ ๊ณตํ ์ ์๋ค. 1. ์ฃผ๋ฌธ๋ฐ๊ธฐ -> 2์ด ์์ 2. ๋ณต์ญ์ํฐ ํ์ฐ๋๋ฅผ ์ปต์ ๋ฃ๋๋ค(1 ์คํผ) -> 2์ด ์์ 3. ๋ฐ๋ปํ ๋ฌผ์ ์กฐ๊ธ ๋ถ๊ณ , ํ์ฐ๋๋ฅผ ๋ น์ฌ์ค๋ค. -> 5์ด ์์ 4. ํ์ฐ๋๊ฐ ๋ น์๋ค๋ฉด, ์ผ์์ ๋ฃ๊ณ ์ฐจ๊ฐ๊ฒ ์ ์ด์ค๋ค. -> 3์ด ์์ 5. ๋ฌผ์ ์ ๋น๋ ๋ฃ์ด์ฃผ๊ณ ์์ด์ค๋ค. -> 2์ด ์์ 6. ์๋์๊ฒ ์ ๊ณตํ๋ค. -> 2์ด ์์ ๋๊ธฐ์ ์คํ(synchronous system) ์ ํ๋์ ํ ์คํฌ ์คํ์ด ์๋ฃ๋ ๋๊น์ง ๋ค๋ฅธ ํ ์คํฌ๋ค์ ๋ธ๋กํน(์์ ์ค๋จ) ๋๋ ๋ฐฉ์์ด๋ค. 1๋ช ์ ์๋์๊ฒ ์๋ฃ๋ฅผ ์ ๊ณตํ๊ธฐ ์ ๊น์ง ๋ค๋ฅธ ์๋์ ..
-
๐์๋ฐ์คํฌ๋ฆฝํธ 5 | this, 5๊ฐ์ง ๋ฐ์ธ๋ฉ ํจํด์๋ฐ์คํฌ๋ฆฝํธ 2020. 7. 21. 18:27
this let array = []; array.push(1); array.pop(); push, pop, shift, unshift ๋ฑ ์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ง์ ๋ฉ์๋๋ค์ ์ฌ์ฉํ ์ ์๋ค. ๋ฉ์๋๋ค์ ์์ ์ด ์ํ ๊ฐ์ฒด(๋ง์นจํ ์์ ๊ฐ์ฒด)์ ํ๋กํผํฐ๋ฅผ ์ฐธ์กฐํ๊ณ ๋ณ๊ฒฝํ ์ ์๋ค. ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ๊ณตํ๋ ๋ฉ์๋๋ค์ ์ด๋ฏธ ์๋ฐ์คํฌ๋ฆฝํธ์์ ์ ์๋ฅผ ํด๋์๊ธฐ ๋๋ฌธ์ ๊ฐ์ ธ๋ค ์ฌ์ฉํ ์ ์๋ค. function Example(){ this.storage = []; } Example.prototype.push = function(){ this.storage.push(1); return 1; } Example ์์ฑ์ ํจ์๋ฅผ ์์ฑํ๋ค. push ๋ฉ์๋๋ storage์ 1์ ์ถ๊ฐํ๋ ๋ฉ์๋์ด๋ค. ์์ฑ์ ํจ์๋ก ์ธ์คํด์ค๋ฅผ ์์ฑ..