# ๋ณ€์ˆ˜(Variable)

# ์†Œ๊ฐœ

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์—์„œ ๋ณ€์ˆ˜๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๊ฐœ๋…์ž…๋‹ˆ๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋กœ์ง์˜ ๋Œ€๋ถ€๋ถ„์˜ ์ฒ˜๋ฆฌ๋Š” ๋ณ€์ˆ˜๋ฅผ ๊ธฐ๋ฐ˜์œผ๋กœ ํ•œ๋‹ค๊ณ  ํ•ด๋„ ๊ณผ์–ธ์ด ์•„๋‹™๋‹ˆ๋‹ค. ๋‹จ์ˆœํ•œ ๋ง์…ˆ ๋“ฑ์˜ ์‚ฌ์น™ ์—ฐ์‚ฐ๋ถ€ํ„ฐ ์‹œ์ž‘ํ•˜์—ฌ ๋ณต์žกํ•œ ํ•จ์ˆ˜์˜ ๊ณ„์‚ฐ๊นŒ์ง€ ๋ชจ๋‘ ๋ณ€์ˆ˜๊ฐ€ ๊ด€์—ฌํ•ฉ๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜๋Š” ์•„๋ž˜์™€ ๊ฐ™์ด ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var a;

์œ„๋Š” a๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ์•„๋ฌด ๊ฐ’๋„ ํ• ๋‹นํ•˜์ง€ ์•Š์œผ๋ฉด ๊ธฐ๋ณธ์ ์œผ๋กœ undefined ๋ผ๋Š” ์ดˆ๊ธฐ๊ฐ’์„ ๊ฐ€์ง‘๋‹ˆ๋‹ค.

# ๋ณ€์ˆ˜์— ๊ฐ’ ํ• ๋‹นํ•˜๊ธฐ

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๊ณ  ๋‚˜๋ฉด ๋ณ€์ˆ˜ ์•ˆ์— ์›ํ•˜๋Š” ๊ฐ’์„ ์ •์˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var a;
a = 10;

์œ„ ์ฝ”๋“œ๋Š” a๋ผ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ •์˜ํ•˜๊ณ  ์ด ๋ณ€์ˆ˜์— 10์ด๋ผ๋Š” ์ˆซ์ž๋ฅผ ํ• ๋‹นํ•œ ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ๋‹ค๋ฅธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ž…๋ฌธ์ž์—๊ฒŒ ์ข‹์€ ์ด์œ ๋Š” ์œ„์™€ ๊ฐ™์ด ๋ณ€์ˆ˜์˜ ํƒ€์ž…(์ข…๋ฅ˜)์„ ์ •์˜ํ•˜์ง€ ์•Š์•„๋„ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ๋•Œ ์ž๋™์œผ๋กœ ํƒ€์ž…์ด ๊ฒฐ์ •๋œ๋‹ค๋Š” ์ ์ž…๋‹ˆ๋‹ค.

์•„๋ž˜์™€ ๊ฐ™์ด ์œ ์—ฐํ•˜๊ฒŒ ์ฝ”๋“œ์˜ ๊ฐ’์„ ๋ฐ”๊ฟ€ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

var a;
a = 10;
console.log(a); // 10

a = 'hi';
console.log(a); // hi

a = false;
console.log(a); // false

# ๋ณ€์ˆ˜์˜ ํƒ€์ž… ํ™•์ธํ•˜๊ธฐ - typeof

์•ž์—์„œ ๋ณธ ๊ฒƒ์ฒ˜๋Ÿผ a๋ผ๋Š” ๋ณ€์ˆ˜์˜ ๊ฐ’์€ ์ˆซ์ž, ๋ฌธ์ž์—ด, ์ง„์œ„ ๊ฐ’ ์ˆœ์„œ๋กœ ๋ณ€๊ฒฝ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. ์—ฌ๊ธฐ์„œ๋Š” ๋‹คํ–‰ํžˆ ํ• ๋‹นํ•œ ๊ฐ’์„ ์‰ฝ๊ฒŒ ๊ตฌ๋ถ„ํ•  ์ˆ˜ ์žˆ์—ˆ์ง€๋งŒ ์‹ค์ œ๋กœ ์ฝ”๋”ฉํ•˜๋‹ค๋ณด๋ฉด ์•„๋ž˜์™€ ๊ฐ™์ด ์‰ฝ๊ฒŒ ํƒ€์ž…์„ ์ถ”์ธกํ•˜๊ธฐ๊ฐ€ ์–ด๋ ต์Šต๋‹ˆ๋‹ค.

<input value="100" />
var divElement = document.querySelector('input').value;
console.log(divElement);

์ด ๋•Œ divElement ๋ณ€์ˆ˜์˜ ํƒ€์ž…์„ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐฉ๋ฒ•์€ ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

console.log(typeof divElement);

์ด์ฒ˜๋Ÿผ ๋ณ€์ˆ˜์˜ ํƒ€์ž…์€ typeof ๋ผ๋Š” ์˜ˆ์•ฝ์–ด๋กœ ํ™•์ธํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

TIP

์˜ˆ์•ฝ์–ด : ์–ธ์–ด์—์„œ ๋ฏธ๋ฆฌ ์ง€์ •ํ•ด๋†“์€ ํ‚ค์›Œ๋“œ, ๋‹จ์–ด