04์žฅ ๋ณ€์ˆ˜(Variable)

๋ณ€์ˆ˜๋ž€ ๋ฌด์—‡์ธ๊ฐ€? ์™œ ํ•„์š”ํ•œ๊ฐ€?

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ค๋ฃฌ๋‹ค. ์•„๋ฌด๋ฆฌ ๋ณต์žกํ•œ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด๋ผ ํ•ด๋„ ๋ฐ์ดํ„ฐ๋ฅผ ์ž…๋ ฅ(input) ๋ฐ›์•„ ์ฒ˜๋ฆฌํ•˜๊ณ , ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ์ถœ๋ ฅ(output)ํ•˜๋Š” ๊ฒƒ์ด ์ „๋ถ€๋‹ค.
  • ์ปดํ“จํ„ฐ๋Š” CPU๋ฅผ ์‚ฌ์šฉํ•ด ์—ฐ์‚ฐํ•˜๊ณ , ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์‚ฌ์šฉํ•ด ๋ฐ์ดํ„ฐ๋ฅผ ๊ธฐ์–ตํ•œ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€(memory cell)์˜ ์ง‘ํ•ฉ์ฒด์ด๋‹ค. ๋ฉ”๋ชจ๋ฆฌ ์…€ ํ•˜๋‚˜์˜ ํฌ๊ธฐ๋Š” 1๋ฐ”์ดํŠธ(8๋น„ํŠธ)์ด๋ฉฐ, ์ปดํ“จํ„ฐ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€์˜ ํฌ๊ธฐ, ์ฆ‰ 1๋ฐ”์ดํŠธ ๋‹จ์œ„๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅ(write)ํ•˜๊ฑฐ๋‚˜ ์ฝ์–ด(read) ๋“ค์ธ๋‹ค.
  • ๊ฐ ์…€์€ ๊ณ ์œ ์˜ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ(memory address)๋ฅผ ๊ฐ€์ง„๋‹ค. ์ด ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์˜ ์œ„์น˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋ฉฐ, 0๋ถ€ํ„ฐ ์‹œ์ž‘ํ•ด์„œ ๋ฉ”๋ชจ๋ฆฌ์˜ ํฌ๊ธฐ๋งŒํผ ์ •์ˆ˜๋กœ ํ‘œํ˜„๋œ๋‹ค. ๋ฉ”๋ชจ๋ฆฌ์— ์ €์žฅ๋˜๋Š” ๋ชจ๋“  ๊ฐ’์€ 2์ง„์ˆ˜๋กœ ์ €์žฅ๋œ๋‹ค.
  • 10 + 20์ด๋ผ๋Š” ์—ฐ์‚ฐ์„ ํ–ˆ์„ ์ ์— ๋ฉ”๋ชจ๋ฆฌ์— ๊ฐ’์ด ์ €์žฅ๋˜์ง€๋งŒ, ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•  ์ˆ˜๊ฐ€ ์—†๋‹ค๋Š” ๊ฒƒ์ด๋‹ค.
    ์ด๋ฅผ ์žฌ์‚ฌ์šฉํ•˜๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ ์™ธ์—๋Š” ๋ฐฉ๋ฒ•์ด ์—†๋‹ค. ํ•˜์ง€๋งŒ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๊ฐ’์— ์ง์ ‘ ์ ‘๊ทผํ•˜๋Š” ๊ฒƒ์€ ์น˜๋ช…์ ์ธ ์˜ค๋ฅ˜๋ฅผ ์•ผ๊ธฐํ•  ์ˆ˜ ์žˆ๊ธฐ์— Javascript๋Š” ๊ฐœ๋ฐœ์ž์˜ ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด๋ฅผ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ๋งŒ์•ฝ Javascript๊ฐ€ ๊ฐœ๋ฐœ์ž์˜ ์ง์ ‘์ ์ธ ๋ฉ”๋ชจ๋ฆฌ ์ œ์–ด๋ฅผ ํ—ˆ์šฉํ•˜๋”๋ผ๋„ ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค. ๊ฐ’์ด ์ €์žฅ๋  ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋Š” ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๋•Œ ๋ฉ”๋ชจ๋ฆฌ์˜ ์ƒํ™ฉ์— ๋”ฐ๋ผ ์ž„์˜๋กœ ๊ฒฐ์ •๋˜๋Š”๋ฐ, ์ด๋Š” ๊ณง ๋™์ผํ•œ ์ปดํ“จํ„ฐ์—์„œ ๋™์ผํ•œ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋”๋ผ๋„ ์‹คํ–‰๋  ๋•Œ๋งˆ๋‹ค ๋ฉ”๋ชจ๋ฆฌ ์ƒํ™ฉ์— ๋”ฐ๋ผ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๊ฐ€ ๋ณ€๊ฒฝ๋˜๋Š” ๋ฌธ์ œ๊ฐ€ ์žˆ๋‹ค.
  • ๋ณ€์ˆ˜(Variable)๋Š” ํ•˜๋‚˜์˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ธฐ ์œ„ํ•ด ํ™•๋ณดํ•œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„ ์ž์ฒด ๋˜๋Š” ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์‹๋ณ„ํ•˜๊ธฐ ์œ„ํ•ด ๋ถ™์ธ ์ด๋ฆ„์ด๋‹ค. ๊ฐ’์˜ ์œ„์น˜๋ฅผ ๊ฐ€๋ฆฌํ‚ค๋Š” ์ƒ์ง•์ ์ธ ์ด๋ฆ„์ธ ๊ฒƒ์ด๋‹ค.
    ์ด๋กœ ์ธํ•ด ๊ฐœ๋ฐœ์ž๋Š” ์ง์ ‘ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ํ†ตํ•ด ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  ์ฐธ์กฐํ•  ํ•„์š”๊ฐ€ ์—†์ด ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ์•ˆ์ „ํ•˜๊ฒŒ ๊ฐ’์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ์ €์žฅ๋œ ๊ฐ’์„ ์‹๋ณ„ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„์„ ๋ณ€์ˆ˜ ์ด๋ฆ„(๋ณ€์ˆ˜๋ช…)์ด๋ผ ํ•œ๋‹ค. ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์€ ๋ณ€์ˆ˜ ๊ฐ’. ๋ณ€์ˆ˜์— ๊ฐ’์„ ์ €์žฅํ•˜๋Š” ํ–‰์œ„๋Š” ํ• ๋‹น(assignment, ๋Œ€์ž…, ์ €์žฅ), ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ์ฝ์–ด ๋“ค์ด๋Š” ๊ฒƒ์„ ์ฐธ์กฐ(reference) ๋ผ ํ•œ๋‹ค.

var ํ‚ค์›Œ๋“œ

var ํ‚ค์›Œ๋“œ๋Š” ๋ณ€์ˆ˜๋ฅผ ์ƒ์„ฑํ•  ๋•Œ ํ•„์š”ํ•œ ํ‚ค์›Œ๋“œ์ด๋‹ค.

  • ES5(ECMAScript5)๊นŒ์ง€๋Š” var ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋‹ค, ES6(ECMAScript6)๊ฐ€ ๋‚˜์˜ค๋ฉด์„œ var ํ‚ค์›Œ๋“œ์˜ ๋‹จ์ ์„ ๋ณด์™„ํ•œ let, const ํ‚ค์›Œ๋“œ๊ฐ€ ๋„์ž…๋๋‹ค. ์ด๋Š” ์ถ”ํ›„ ์ฑ•ํ„ฐ์—์„œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.

var ํ‚ค์›Œ๋“œ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๋™์‹œ์— ์ดˆ๊ธฐํ™”๊ฐ€ ์ง„ํ–‰๋œ๋‹ค.
์ดˆ๊ธฐํ™”(initialization)๋ž€ ๋ณ€์ˆ˜๊ฐ€ ์„ ์–ธ๋œ ์ดํ›„ ์ตœ์ดˆ๋กœ ๊ฐ’์„ ํ• ๋‹นํ•˜๋Š” ๊ฒƒ์„ ๋œปํ•œ๋‹ค.

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” undefined๋กœ ์•”๋ฌต์ ์ธ ์ดˆ๊ธฐํ™”๊ฐ€ ์ž๋™ ์ˆ˜ํ–‰๋œ๋‹ค.

  • undefined๋Š” Javascript์—์„œ ์ œ๊ณตํ•˜๋Š” ์›์‹œ ํƒ€์ž…์˜ ๊ฐ’(primitive value)์ด๋‹ค. ์ด ๋˜ํ•œ ์ถ”ํ›„ ์ฑ•ํ„ฐ์—์„œ ์„ค๋ช…ํ•˜๊ฒ ๋‹ค.
var score; // ๋ณ€์ˆ˜ ์„ ์–ธ
console.log(score); // undefined, ์„ ์–ธ๊ณผ ๋™์‹œ์— undefined๋กœ ์ž๋™ ์ดˆ๊ธฐํ™”

var score1; // ๋ณ€์ˆ˜ ์„ ์–ธ
var score1 = 80; // ๊ฐ’์˜ ํ• ๋‹น

๋งŒ์•ฝ ๋ณ€์ˆ˜์˜ ์ดˆ๊ธฐํ™” ๋‹จ๊ณ„๋ฅผ ๊ฑฐ์น˜์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ™•๋ณด๋œ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์—๋Š” ์ด์ „์— ๋‹ค๋ฅธ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์ด ์‚ฌ์šฉํ–ˆ๋˜ ๊ฐ’์ด ๋‚จ์•„์žˆ์„ ์ˆ˜ ์žˆ๋‹ค. ์ด๋Ÿฌํ•œ ๊ฐ’์„ ์“ฐ๋ ˆ๊ธฐ ๊ฐ’(Garbage Value)์ด๋ผ๊ณ  ํ•œ๋‹ค.
๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ ค๋ฉด ๋ฐ˜๋“œ์‹œ ์„ ์–ธ(declaration)์ด ํ•„์š”ํ•˜๋‹ค.
๋ณ€์ˆ˜๋ฟ๋งŒ์ด ์•„๋‹Œ ๋ชจ๋“  ์‹๋ณ„์ž(ํ•จ์ˆ˜, ํด๋ž˜์Šค)๊ฐ€ ๊ทธ๋ ‡๋‹ค.
๋งŒ์•ฝ, ์„ ์–ธํ•˜์ง€ ์•Š์€ ์‹๋ณ„์ž์— ์ ‘๊ทผํ•˜๋ฉด ReferenceError(์ฐธ์กฐ ์—๋Ÿฌ)๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.

๋ณ€์ˆ˜ ์„ ์–ธ์˜ ์‹คํ–‰ ์‹œ์ ๊ณผ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…

console.log(score); // undefined
var score; // ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ

์œ„ ์˜ˆ์ œ๋ฅผ ๋ณด๋ฉด ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ๋ณด๋‹ค ๋ณ€์ˆ˜๋ฅผ ์ฐธ์กฐํ•˜๋Š” ์ฝ”๋“œ๊ฐ€ ์•ž์— ์žˆ๋‹ค.
Javascript ์ฝ”๋“œ๋Š” ์ธํ„ฐํ”„๋ฆฌํ„ฐ(Interpreter)์— ์˜ํ•ด ํ•œ ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋œ๋‹ค.
๋”ฐ๋ผ์„œ ์ฐธ์กฐ ์—๋Ÿฌ๊ฐ€ ๋ฐœ์ƒํ•  ๊ฑฐ ๊ฐ™์ง€๋งŒ, undefined๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค.
๊ทธ ์ด์œ ๋Š” ๋ณ€์ˆ˜ ์„ ์–ธ์ด ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ํ•œ ์ค„์”ฉ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์‹œ์ , ์ฆ‰ ๋Ÿฐํƒ€์ž„(Runtime)์ด ์•„๋‹ˆ๋ผ ๊ทธ ์ด์ „ ๋‹จ๊ณ„์—์„œ ๋จผ์ € ์‹คํ–‰๋˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.
Javascript ์—”์ง„์€ ๋ณ€์ˆ˜ ์„ ์–ธ์„ ํฌํ•จํ•œ ๋ชจ๋“  ์„ ์–ธ๋ฌธ์„ ๋จผ์ € ์†Œ์Šค์ฝ”๋“œ์—์„œ ์ฐพ์•„๋‚ด ์‹คํ–‰ํ•œ ๋‹ค์Œ ๋ชจ๋“  ์„ ์–ธ๋ฌธ์„ ์ œ์™ธํ•˜๊ณ  ์ˆœ์ฐจ์ ์œผ๋กœ ์†Œ์Šค์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋Š” ํŠน์„ฑ์„ ์ง€๋‹ˆ๊ณ  ์žˆ๋‹ค.
์ด์ฒ˜๋Ÿผ ๋ณ€์ˆ˜ ์„ ์–ธ๋ฌธ์ด ์ฝ”๋“œ์˜ ์•ž์œผ๋กœ ๋Œ์–ด์˜ฌ๋ ค์ง„ ๊ฒƒ์ฒ˜๋Ÿผ ๋™์ž‘ํ•˜๋Š” Javascript ๊ณ ์œ ์˜ ํŠน์ง•์„ ๋ณ€์ˆ˜ ํ˜ธ์ด์ŠคํŒ…(variable hoisting)์ด๋ผ ํ•œ๋‹ค.

๊ฐ’์˜ ํ• ๋‹น

์•ž์„œ ๋งํ–ˆ๋“ฏ ๋ณ€์ˆ˜ ์„ ์–ธ์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„ ์ด์ „์— ๋จผ์ € ์‹คํ–‰๋˜์ง€๋งŒ ๋ณ€์ˆ˜ ๊ฐ’์˜ ํ• ๋‹น์€ ์†Œ์Šค์ฝ”๋“œ๊ฐ€ ์ˆœ์ฐจ์ ์œผ๋กœ ์‹คํ–‰๋˜๋Š” ์‹œ์ ์ธ ๋Ÿฐํƒ€์ž„ ๋•Œ์— ์‹คํ–‰๋œ๋‹ค.
์•„๋ž˜์˜ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

console.log(score); // undefined

var score; // 1. ๋ณ€์ˆ˜ ์„ ์–ธ
score = 80; // 2. ๊ฐ’์˜ ํ• ๋‹น

console.log(score); // 80

ํ•˜์ง€๋งŒ ์œ„์ฒ˜๋Ÿผ ๋ณ€์ˆ˜ ๊ฐ’์„ ํ• ๋‹นํ•  ๋•Œ์—๋Š” ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค.
์ด์ „ ๊ฐ’ undefined๊ฐ€ ์ €์žฅ๋˜์–ด ์žˆ๋˜ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ์ง€์šฐ๊ณ  ๊ทธ ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์— ํ• ๋‹น ๊ฐ’ 80์„ ๋ฎ์–ด์„œ ์ €์žฅํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹Œ, ์ƒˆ๋กœ์šด ๋ฉ”๋ชจ๋ฆฌ ๊ณต๊ฐ„์„ ํ™•๋ณดํ•˜๊ณ  ๊ทธ๊ณณ์— ํ• ๋‹น ๊ฐ’ 80์„ ์ €์žฅํ•œ๋‹ค.
์•„๋ž˜ ์˜ˆ์ œ๋ฅผ ์ฐธ๊ณ ํ•˜์ž.

console.log(score); // undefined

score = 80; // ๊ฐ’์˜ ํ• ๋‹น
var score; // ๋ณ€์ˆ˜ ์„ ์–ธ, 80, ๋จผ์ € ๋ณ€์ˆ˜ ์„ ์–ธ์„ ์‹คํ–‰ํ–ˆ๊ธฐ์— ๋Ÿฐํƒ€์ž„๋•Œ ์‹คํ–‰๋˜๋Š” 80์˜ ๊ฐ’์ด ๋Œ€์ž…๋จ.

console.log(score); // undefined, ๋ณ€์ˆ˜ ๋ช…์€ score๋กœ ๋™์ผํ•˜์ง€๋งŒ ์„œ๋กœ ๋‹ค๋ฅธ ๋ฉ”๋ชจ๋ฆฌ ์ฃผ์†Œ๋ฅผ ๊ฐ€์ง„๋‹ค.

๊ฐ’์˜ ์žฌํ• ๋‹น

var ํ‚ค์›Œ๋“œ๋กœ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ๊ฐ’์„ ์žฌํ• ๋‹นํ•  ์ˆ˜ ์žˆ๋‹ค.
์žฌํ• ๋‹น์€ ํ˜„์žฌ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ฒ„๋ฆฌ๊ณ  ์ƒˆ๋กœ์šด ๊ฐ’์„ ์ €์žฅํ•œ๋‹ค.
์žฌํ• ๋‹น์€ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๋‹ค๋ฅธ ๊ฐ’์œผ๋กœ ๋ณ€๊ฒฝํ•œ๋‹ค. ๊ทธ๋ž˜์„œ ๋ณ€์ˆ˜๋ผ๊ณ  ์ผ์ปซ๋Š”๋‹ค.
๋งŒ์•ฝ ๊ฐ’์„ ์žฌํ• ๋‹น ํ•  ์ˆ˜ ์—†์–ด์„œ ๋ณ€์ˆ˜์— ์ €์žฅ๋œ ๊ฐ’์„ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์—†๋‹ค๋ฉด ๋ณ€์ˆ˜๊ฐ€ ์•„๋‹ˆ๋ผ ์ƒ์ˆ˜(constant)๋ผ๊ณ  ํ•œ๋‹ค.

  • ES6์—์„œ ์ถ”๊ฐ€๋œ let ํ‚ค์›Œ๋“œ๋Š” ๋ณ€์ˆ˜, const ํ‚ค์›Œ๋“œ๋Š” ์ƒ์ˆ˜์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•œ๋‹ค.
var score = 80; // ๋ณ€์ˆ˜ ์„ ์–ธ๊ณผ ๊ฐ’์˜ ํ• ๋‹น
score = 90; // ๊ฐ’์˜ ์žฌํ• ๋‹น

๊ฐ’์˜ ์žฌํ• ๋‹น

์œ„ ๊ทธ๋ฆผ์ฒ˜๋Ÿผ score์˜ ์ตœ์ข… ๊ฐ’์˜ ํ• ๋‹น์€ 90์ด๋‹ค.
๊ทธ๋ ‡๋‹ค๋ฉด ์ด์ „์— ํ• ๋‹น๋˜์—ˆ๋˜ undefined ๊ฐ’๊ณผ, 80์€ ์–ด๋””๋กœ ๊ฐ”์„๊นŒ?
์•„๋ฌด๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์ง€ ์•Š์€ ์ด๋Ÿฐ ๋ถˆํ•„์š”ํ•œ ๊ฐ’๋“ค์€ ๊ฐ€๋น„์ง€ ์ฝœ๋ ‰ํ„ฐ(Garbage Collector)์— ์˜ํ•ด ๋ฉ”๋ชจ๋ฆฌ์—์„œ ์ž๋™ ํ•ด์ œ๋œ๋‹ค.

์‹๋ณ„์ž ๋„ค์ด๋ฐ ๊ทœ์น™

์‹๋ณ„์ž(identifier)๋Š” ์–ด๋–ค ๊ฐ’์„ ๊ตฌ๋ณ„ํ•ด์„œ ์‹๋ณ„ํ•ด๋‚ผ ์ˆ˜ ์žˆ๋Š” ๊ณ ์œ ํ•œ ์ด๋ฆ„์ด๋‹ค.
์‹๋ณ„์ž๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ๋„ค์ด๋ฐ ๊ทœ์น™์„ ์ค€์ˆ˜ํ•ด์•ผ ํ•œ๋‹ค.

  • ์‹๋ณ„์ž๋Š” ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž, ์ˆซ์ž, ์–ธ๋”์Šค์ฝ”์–ด(_), ๋‹ฌ๋Ÿฌ ๊ธฐํ˜ธ($)๋ฅผ ํฌํ•จํ•  ์ˆ˜ ์žˆ๋‹ค.
  • ๋‹จ, ์‹๋ณ„์ž๋Š” ํŠน์ˆ˜๋ฌธ์ž๋ฅผ ์ œ์™ธํ•œ ๋ฌธ์ž, ์ˆซ์ž, ์–ธ๋”์Šค์ฝ”์–ด(_), ๋‹ฌ๋Ÿฌ ๊ธฐํ˜ธ($)๋กœ ์‹œ์ž‘ํ•ด์•ผ ํ•œ๋‹ค. ์ˆซ์ž๋กœ ์‹œ์ž‘ํ•˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉํ•˜์ง€ ์•Š๋Š”๋‹ค.
  • ์˜ˆ์•ฝ์–ด๋Š” ์‹๋ณ„์ž๋กœ ์‚ฌ์šฉํ•  ์ˆ˜ ์—†๋‹ค.

Javascript ์˜ˆ์•ฝ์–ด

๋‹ค์Œ์€ ์˜ˆ์ œ๋“ค์ด๋‹ค.

var first-name; // - ์ผ๋ฐ˜ ๋Œ€์‹œ๋ฐ”๋Š” ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
var 1st; // ์ˆซ์ž๊ฐ€ ์‹๋ณ„์ž ์•ž์— ์‚ฌ์šฉ๋˜๋Š” ๊ฒƒ์€ ํ—ˆ์šฉ๋˜์ง€ ์•Š๋Š”๋‹ค.
var this; // this๋Š” ์˜ˆ์•ฝ์–ด์ด๊ธฐ์— ์‚ฌ์šฉ์ด ๋ถˆ๊ฐ€ํ•˜๋‹ค.

Javascript๋Š” ๋Œ€์†Œ๋ฌธ์ž๋ฅผ ๊ตฌ๋ณ„ํ•œ๋‹ค. ๋”ฐ๋ผ์„œ ๋‹ค์Œ ๋ณ€์ˆ˜๋“ค์€ ๊ฐ๊ฐ ๋ณ„๊ฐœ์˜ ๋ณ€์ˆ˜๋“ค์ด๋‹ค.

var firstname;
var firstName;
var FIRSTNAME;

๋„ค์ด๋ฐ ์ปจ๋ฒค์…˜(naming convention)์€ ํ•˜๋‚˜ ์ด์ƒ์˜ ์˜๋‹จ์–ด๋กœ ๊ตฌ์„ฑ๋œ ์‹๋ณ„์ž๋ฅผ ๋งŒ๋“ค ๋•Œ ๊ฐ€๋…์„ฑ ์ข‹๊ฒŒ ๋‹จ์–ด๋ฅผ ํ•œ๋ˆˆ์— ๊ตฌ๋ถ„ํ•˜๊ธฐ ์œ„ํ•ด ๊ทœ์ •ํ•œ ๋ช…๋ช… ๊ทœ์น™์ด๋‹ค.

var firstName; // ์นด๋ฉœ ์ผ€์ด์Šค(camelCase), ๋ณดํŽธ์ ์œผ๋กœ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉํ•œ๋‹ค.

var first_name; // ์Šค๋„ค์ดํฌ ์ผ€์ด์Šค(snake_case)

var FirstName; // ํŒŒ์Šค์นผ ์ผ€์ด์Šค(PascalCase)

์ผ๋ฐ˜์ ์œผ๋กœ ๋ณ€์ˆ˜๋‚˜ ํ•จ์ˆ˜์˜ ์ด๋ฆ„์—๋Š” ์นด๋ฉœ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๊ณ , ์ƒ์„ฑ์ž ํ•จ์ˆ˜&ํด๋ž˜์Šค์˜ ์ด๋ฆ„์—๋Š” ํŒŒ์Šค์นผ ์ผ€์ด์Šค๋ฅผ ์‚ฌ์šฉํ•œ๋‹ค.

๋ณต์‚ฌํ–ˆ์Šต๋‹ˆ๋‹ค!