๐์ค๋ ๋ฐฐ์ด ๊ฒ
๋ณ์์ ๋ฉ๋ชจ๋ฆฌ ํ ๋น์ ์ธ์ ์ผ์ด๋๋๊ฐ?
๋ฉด์ ์คํฐ๋๋ฅผ ํ๋ฉด์ ์ด์ผ๊ธฐ๊ฐ ๋์ ์ฐพ์๋ณด๊ฒ ๋์๋ค. ๋ณ์ ๊ฐ์ฒด๋ฅผ ์คํ ์ปจํ ์คํธ์ ๋ฑ๋กํ๊ณ ๋ฉ๋ชจ๋ฆฌ ์ฃผ์๋ฅผ ๋งตํํ๊ณ ๋ง๋ ๋ค์ undefined๋ก ์ด๊ธฐํ๋ฅผ ํ๋ค. ๊ทธ ๋ค์ ๋ฐ์ดํฐ๋ฅผ ํ ๋นํ๊ฒ ๋๋ค. ์ด ๋ ๋ฉ๋ชจ๋ฆฌ ๋ฑ๋ก์ ์ธ์ ์ผ์ด๋๋๊ฐ? ์ฌ์ค ์์ง ์๋ฒฝํ ์ฐพ์๋ณด์ง ๋ชปํ๋ค. ๋ฅ๋ค์ด๋ธ ์์ ์ด๋ ๊ฒ์ ๊ฒฐ๊ณผ ์ด๊ธฐํ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค๊ณ ํ๋๋ฐ ์ ์ธ ๋จ๊ณ์์ ํ๋ค๋ ์๊ฒฌ๋ ์์์ด์ ์ข ๋ ์ฐพ์๋ณด๋ ค๊ณ ํ๋ค. chat gpt ํํ ๋ ๊ณ์ ๋ฌผ์ด๋ณด๊ณ ์๋๋ฐ ์ ์ธ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํ๋ค๊ณ ํ๋ค..๋ณ์ '์ ์ธ'์ด๋ผ๋ ๊ฑธ ์ ์ธ + ์ด๊ธฐํ ๋จ๊ณ๋ก ํฉ์ณ์ ๋ถ๋ฅด๊ธฐ๋ ํด์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๊ธฐ๋ ํ๊ณ ... ๋ ์ฐพ์๋ด์ผ์ง! chat gpt์์ ์ ๋ ๊ฒ ๋งํ๋ ๊ทผ๊ฑฐ์ ์ถ์ฒ๊ฐ ์ด๋์ง ๊ถ๊ธํ๋ค. ์ง์ ๋ณด๊ณ ์ถ๋ค.
poiemaweb์์ ๋ฐ์ทํ ๋ด์ฉ
์ ์ธ ๋จ๊ณ(Declaration phase)
๋ณ์ ๊ฐ์ฒด(Variable Object)์ ๋ณ์๋ฅผ ๋ฑ๋กํ๋ค. ์ด ๋ณ์ ๊ฐ์ฒด๋ ์ค์ฝํ๊ฐ ์ฐธ์กฐํ๋ ๋์์ด ๋๋ค.
์ด๊ธฐํ ๋จ๊ณ(Initialization phase)
๋ณ์ ๊ฐ์ฒด(Variable Object)์ ๋ฑ๋ก๋ ๋ณ์๋ฅผ ๋ฉ๋ชจ๋ฆฌ์ ํ ๋นํ๋ค. ์ด ๋จ๊ณ์์ ๋ณ์๋ undefined๋ก ์ด๊ธฐํ๋๋ค.
ํ ๋น ๋จ๊ณ(Assignment phase)
undefined๋ก ์ด๊ธฐํ๋ ๋ณ์์ ์ค์ ๊ฐ์ ํ ๋นํ๋ค.
์ถ์ฒ: https://poiemaweb.com/js-data-type-variable
chat gptํํ ๋ฌผ์ด๋ดค์ ๋ ๋ต๋ณ
๋ณ์์ ์ ์ธ ๋จ๊ณ์์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ํ ๋นํฉ๋๋ค.
๋ณ์๋ฅผ ์ ์ธํ ๋, ์๋ฐ์คํฌ๋ฆฝํธ ์์ง์ ํด๋น ๋ณ์๋ฅผ ์ ์ฅํ ๋ฉ๋ชจ๋ฆฌ ๊ณต๊ฐ์ ๋ง๋ญ๋๋ค. ์ด ๊ณต๊ฐ์ ๋ณ์ ์ด๋ฆ, ๋ฐ์ดํฐ ์ ํ ๋ฑ์ ์ ์ฅํ ์ ์๋๋ก ๋ฏธ๋ฆฌ ์์ฝ๋์ด ์์ต๋๋ค.
๊ทธ ๋ค์, ๋ณ์์ ์ด๊ธฐํ ๋จ๊ณ์์๋ ํด๋น ๋ณ์์ ๊ฐ์ ํ ๋นํฉ๋๋ค. ๋ณ์๊ฐ ์ ์ธ๋ ํ์๋ ๊ฐ์ด ํ ๋น๋๊ธฐ ์ ๊น์ง๋ ๋ณ์์ ๊ฐ์ undefined๋ก ์ค์ ๋ฉ๋๋ค.
๋ง์ง๋ง์ผ๋ก ๋ณ์์ ํ ๋น ๋จ๊ณ์์๋ ๋ณ์์ ์๋ก์ด ๊ฐ์ ํ ๋นํฉ๋๋ค. ์ด๋ ๋ณ์์ ๋ฐ์ดํฐ ์ ํ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ๋ ์์ ์ ์์ต๋๋ค.
๋ ์์ปฌ ์ค์ฝํ vs ๋์ ์ค์ฝํ
๋ฉด์ ์คํฐ๋๋ฅผ ์ค๋นํ๋ฉด์ ์ฒ์ ์๊ฒ ๋ ๊ฐ๋ ์ด๋ค.
๋ ์์ปฌ ์ค์ฝํ๋?
๋ ์์ปฌ ์ค์ฝํ๋ ํจ์ ์ ์ธ ์์น์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ ์์ ์ค์ฝํ๋ก ์๋ฐ์คํฌ๋ฆฝํธ๋ ๊ธฐ๋ณธ์ ์ผ๋ก ๋ ์ด๋ฌ ์ค์ฝํ๋ฅผ ๋ฐ๋ฅธ๋ค.
๋์ (๋ค์ด๋๋ฏน) ์ค์ฝํ
ํจ์ ํธ์ถ ์์น์ ๋ฐ๋ผ ๊ฒฐ์ ๋๋ ์์ ์ค์ฝํ๋ฅผ ์๋ฏธํ๋ค.
var x = 1;
function foo() {
var x = 10;
bar();
}
function bar() {
console.log(x);
}
foo(); // 1
bar(); // 1
foo์ bar๋ชจ๋ ์ ์ญ์ ์ ์ธ๋์ด์๊ธฐ ๋๋ฌธ์ ์์ ์ค์ฝํ๋ ์ ์ญ ์ค์ฝํ์ด๋ค. ๋ฐ๋ผ์ ๋ชจ๋ ์ ์ญ์ ์๋ x = 1์ ์ฐธ์กฐํ๊ฒ ๋๋ค.
์น ์ ๊ทผ์ฑ
ํ๋ก์ ํธ๋ก ๋ญํ ๊น ๊ณ ๋ฏผํ๋ค๊ฐ ์ด์ ๋ถํฐ ๊ด์ฌ์๋ ์น ์ ๊ทผ์ฑ์ ๋ํด ์ข ๋ ์์๋ณด์๋ค. ๊ณ ๋ฑํ์๋ถํฐ ๋ํ์ ๋๊น์ง ์๊ฐ์ฅ์ ์ธ ์ฑ ํ์ดํ ๋ด์ฌ๋ฅผ ํ๋ฉด์ ๊ด๋ จํด์ ์๊ฒ ๋์๊ณ ๋ํ์ ๋๋ ๊ด๋ จํด์ ์ ์๊ต์ก ์์ ๋ ๋ง๋ค์ด๋ณด๊ณ ํ์๋ค. ๊ทธ๋ฆฌ๊ณ ๊ฐ๋ฐ๊ณต๋ถ๋ฅผ ํ๋ฉด์ ์น ์ ๊ทผ์ฑ์ด๋ผ๋ ๊ฒ์ ์๊ณ ์ ๋ง ์ค์ํ ๋ถ๋ถ์ด๊ฒ ๊ตฌ๋ ์๊ฐํ๋ค. ํ์ง๋ง ์คํฌ๋ฆฐ๋ฆฌ๋๊ธฐ๋ฅผ ์ง์ ์ฒดํํด๋ณธ ์ ์ด ์์ด์ ์๋ฉํฑ ํ๊ทธ๊ฐ ์ผ๋ง๋ ์ค์ํ์ง ์ฒด๊ฐํ ๊ธฐํ๊ฐ ์์๋๋ฐ
[๋ค์ด๋ฒ ์จ๋ผ์ธ ์ฅ์ ์ฒดํ]
๋ค์ํ ์น ์ํฉ์ ๊ณต๊ฐํ์ฌ ์น์ ๋ฌธํฑ์ ๋ฎ์ถฐ์ฃผ๋ ์น ์ ๊ทผ์ฑ ์ฒดํ
nax.naver.com
๋ค์ด๋ฒ์์ ๋ง๋ ํด๋น ์๋น์ค๋ฅผ ํตํด์ ์ค์ ์ฅ์ ์ธ๋ถ๋ค์ ์ํฉ์ ์ฒดํํด๋ณด๋ฉฐ ๊ณต๊ฐํ ์ ์์๋ค. ์คํฌ๋ฆฐ ๋ฆฌ๋๊ธฐ๋ ์ฒดํํด๋ณด๋ฉฐ ์ ์ด๋์ ์๋งจํฑ ํ๊ทธ๊ฐ ์ค์ํ ๊ฑฐ๊ตฌ๋ ํ๊ณ ๋ค์ ํ๋ฒ ๊นจ๋ฌ์๋ค. ์ง๊ธ ๋ฆฌํฉํ ๋ง ์ค์ธ ํ๋ก์ ํธ๋ ์น ์ ๊ทผ์ฑ ๊ด๋ จํด์ ๋ฆฌํฉํ ๋ง์ ์งํํ ์์ ์ด๋ค.
์ฒ์์๋ ํ์ด์ง์ ๋ด์ฉ์ ์์ฑ์ผ๋ก ์๋ดํ๋ ๊ฒ ์ข์๊ฑด๊ฐ? ํ๋๋ฐ ์ค ์ฌ์ฉ์ ์ ์ฅ์์๋ ์คํฌ๋ฆฐ๋ฆฌ๋๊ธฐ์ ์์ฑ์ด ๊ฒน์ณ์ ์คํ๋ ค ๊ณค์์ด๋ผ๊ณ ํ๋ค. ๋ํ ์๊ฐ์ฅ์ ์ธ์ฉ ์ฌ์ดํธ๋ฅผ ๋ฐ๋ก ๋ง๋ ๊ณณ๋ค๋ ์์๋๋ฐ ๊ทธ๋ ๊ฒ ๋ง๋ค์ด์ง ์ฌ์ดํธ๋ ์ง์ง ์๋ฌด ๋ด์ฉ๋ ์์ด์ ์คํ๋ ค ์ ๋๋๊ธฐ์ธ ๊ฒ ๊ฐ๋ค. ์ง์ง ์ ๋ง๋ค์ด์ง ์ฌ์ดํธ๋ผ๋ฉด ๋น์ฅ์ ์ธ๊ณผ ์ฅ์ ์ธ ์ฌ์ฉ์ ๋ชจ๋ ๊ฐ์ ์ฌ์ดํธ๋ฅผ ๋ฌด๋ฆฌ์์ด ์ด์ฉํ ์ ์์ด์ผ ๋ง๋ ๊ฒ ๊ฐ๋ค. ๊ทธ๋ ๊ฒ ํ๊ธฐ ์ํด ์ด๋ค ์์ ๋ค์ด ๋ ๊ณ ๋ ค๋๋ฉด ์ข์์ง ์ฐพ์๋ณด๊ณ ์งํํ ํ๋ก์ ํธ๋ ์๋๋ฉด ์ค์ ์๋น์ค๋๊ณ ์๋ ์ฌ์ดํธ๋ฅผ ํด๋ก ์ฝ๋ฉํด์ ์ ์ฉํด๋ณผ๊น ํ๋ค. ํ๋ก ํธ์๋๋ผ๋ฉด ๊ผญ ์์์ผํ๋ ๊ณผ์ ์ธ ๊ฒ ๊ฐ๋ค!
๐ญ๋ฐฐ์ด ์
๊ณต๋ถํ๋ฉด์๋ ๋ด๊ฐ ํนํ ์ด๋ ์ชฝ์ ๋ ๊ด์ฌ์ด ๊ฐ๋์ง ์ฐพ๋ ๊ฒ๋ ์ค์ํ ๊ฒ ๊ฐ๋ค. ํ์ ๋์ ๋๋์ง ์๋ ์ ์ฑ/๊ด์ฌ์ฌ ์ฐพ๊ธฐ... ์๋งจํฑํ๊ทธ์ ์ค์์ฑ์ ๋ชจ๋๊ฐ ๊ฐ์กฐํ๊ณ ๋ง์ด ๋ฐฐ์์๋ ์์ธ๋ก ์๋งจํฑ ํ๊ทธ๋ฅผ ์ ๋๋ก ์ฌ์ฉํ๋ ์ฌ์ดํธ๋ฅผ ๋ณด๊ธฐ ์ฝ์ง ์๋ค! ๊ทธ๋งํผ ์น์ ๊ทผ์ฑ์ ์งํค๊ธฐ ์ด๋ ค์ด๊ฑธ๊น? ๋ ๊ณต๋ถํด๋ด์ผ์ง!
'์ผ์ > Today I Learned' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
2023.05.04[์น ์ ๊ทผ์ฑ] (0) | 2023.05.04 |
---|---|
2023.04.26[์น ์ ๊ทผ์ฑ ๋ฆฌํฉํ ๋ง ์ค] (0) | 2023.04.26 |
2023.04.24[๋ฆฌ์กํธ state] (0) | 2023.04.24 |
2023.04.21[์ด์ค ์ฐ๊ฒฐ ๋ฆฌ์คํธ, ๋ฉด์ ์คํฐ๋] (0) | 2023.04.21 |
2023.04.20[DFS] (0) | 2023.04.20 |