Curl Up Black Cat

 

 

 

undefined

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋”ฉ์„ ํ•˜๋‹ค๋ณด๋ฉด ๋ฌด์–ธ๊ฐ€ ์˜์‹ฌ์ฉ์€ ์ผ์ด ์ƒ๊ธฐ๋ฉด undefined๋ฅผ ๋งŒ๋‚˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค. ์ด๋Š” ์•„์ง ์ดˆ๊ธฐํ™”ํ•˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋‚˜ ์กด์žฌํ•˜์ง€ ์•Š๋Š”(์•„๋‹ˆ๋ฉด ์‚ญ์ œํ•œ) ์†์„ฑ, ํ˜น์€ ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๋ฐฐ์—ด ์š”์†Œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒฝ์šฐ ๋“ฑ์—์„œ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค.

 

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

 

๋˜ํ•œ ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๊ฒƒ์ค‘์— ํ•˜๋‚˜๋Š” undefined ๊ฐ’์˜ ํ˜•์€ undefined ์ž…๋‹ˆ๋‹ค. ์ด์— ๋Œ€ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋…ผ๋ฆฌ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. "์ด ๊ฐ’์€ ๊ฐ์ฒด๋„, ์ˆซ์ž๋„, ๋ฌธ์ž์—ด๋„, ๋ถˆ๋ฆฐํ˜•๋„ ์•„๋‹ˆ๋‹ค. ํ˜•์„ ์•Œ ์ˆ˜ ์—†์œผ๋‹ˆ ์ž๋ฃŒํ˜•์„ undefined๋กœ ๋งŒ๋“œ๋Š” ๊ฒƒ๋„ ๋ฌธ์ œ๊ฐ€ ์—†๋‹ค." ์ด๊ฒƒ์ด ์šฐ๋ฆฌ๊ฐ€  ๋ฐ›์•„ ๋“ค์—ฌ์•ผ ํ•˜๋Š” ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์ด์ƒํ•œ ์˜์—ญ ์ค‘ ํ•˜๋‚˜์ž…๋‹ˆ๋‹ค.

 

undefined vs null

์ €๋Š” ์ด์  ๋•Œ๋ฌธ์— ํ˜ผ๋ž€์ด ์ข…์ข… ์ƒ๊ธฐ๊ธฐ๋„ ํ•˜์˜€์Šต๋‹ˆ๋‹ค. '๊ฐ์ฒด ์—†์Œ'์„ ์˜๋ฏธํ•˜๋Š” ๊ฐœ๋…์„ ๋œปํ•˜๋Š” ์–ธ์–ด๊ฐ€ ๋งŽ์ด ์žˆ์Šต๋‹ˆ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์ž˜๋ชป๋œ ๊ฒƒ๋„ ์•„๋‹™๋‹ˆ๋‹ค. document.getElementById() ๋ฉ”์„œ๋“œ๋ฅผ ์˜ˆ๋กœ ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค. getElementById() ๋ฉ”์„œ๋“œ๋Š” DOM ์— ๋Œ€ํ•œ ํ•ด๋‹น ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ์š”์†Œ๋ฅผ ์ฐพ์ง€ ๋ชปํ•˜๋ฉด null ์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. null ์€ ์ •ํ™•ํžˆ ์–ด๋–ค ๊ฑด๊ฐ€์š”? ์™œ undefined ๊ฐ€ ์•„๋‹ˆ๋ผ null์„ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฑธ๊นŒ์š”?


getElementById() ๋ฉ”์„œ๋“œ๊ฐ€ ํ•˜๋Š”์ผ์€ ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋Š”๊ฒƒ์ž…๋‹ˆ๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์›ํ•˜๋Š” ๊ฐ์ฒด๋ฅผ ์ฐพ์ง€ ๋ชปํ•œ๋‹ค๋ฉด... ๊ทธ๋Ÿฌ๋ฉด ์šฐ๋ฆฌ๋Š” "๊ทธ๋Ÿฐ ๊ฐ์ฒด๊ฐ€ ์žˆ๋‹ค๋ฉด ๋ฐ˜ํ™˜ํ•˜๊ฒ ์ง€๋งŒ, ๋‚˜์—๊ฒ ๊ทธ๋Ÿฐ ๊ฐ์ฒด๊ฐ€ ์—†๋‹ค" ๊ณ  ์•Œ๋ ค์ฃผ๋Š” ๋ฌด์–ธ๊ฐ€๋ฅผ ๋ฐ˜ํ™˜ํ•˜๊ณ  ์‹ถ์—ˆ์„ ๊ฒ๋‹ˆ๋‹ค. ๊ทธ๊ฒŒ ๋ฐ”๋กœ null ์ž…๋‹ˆ๋‹ค.

 

null ๊ฐ’์€ ๋ณ€์ˆ˜์— ์ง์ ‘ ํ• ๋‹นํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

var obj = null;

 

์šฐ๋ฆฌ๊ฐ€ ์ƒ๊ฐํ•ด ๋ด์•ผํ•  ๊ฒƒ์€ ๋ณ€์ˆ˜์— null ๊ฐ’์„ ํ• ๋‹นํ•œ๋‹ค๋Š”๊ฒŒ ์–ด๋–ค ์˜๋ฏธ์ธ๊ฐ€ ์ž…๋‹ˆ๋‹ค. ๊ทธ๊ฑด ๋ฐ”๋กœ "์ด ๋ณ€์ˆ˜์— ์–ธ์  ๊ฐ€ ๊ฐ์ฒด๋ฅผ ํ• ๋‹นํ•˜๋ ค๊ณ  ํ•˜๋Š”๋ฐ, ์ง€๊ธˆ์€ ๊ฐ์ฒด๊ฐ€ ์—†๋‹ค." ๋ผ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ทธ๋ ‡๋‹ค๋ฉด ๊ทธ๋Ÿฐ ์˜๋ฏธ๋กœ undefined ๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ์•ˆ๋ ๊นŒ์š”? ํ•˜๊ณ  ๊ณ ๊ฐœ๋ฅผ ๊ฐธ์šฐ๋šฑํ•˜๊ณ  ์žˆ๋‹ค๋ฉด ์—ฌ๋Ÿฌ๋ถ„์€ ์ง€๊ธˆ๊นŒ์ง€์˜ ์„ค๋ช…์„ ์ œ๋Œ€๋กœ ์ดํ•ดํ•˜๊ณ  ์žˆ๋Š” ๊ฒ๋‹ˆ๋‹ค. ์‚ฌ์‹ค ์ด ์งˆ๋ฌธ์— ๋Œ€ํ•œ ๋Œ€๋‹ต์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ์•„์ฃผ ์ดˆ์ฐฝ๊ธฐ์— ๋‚˜์™”์Šต๋‹ˆ๋‹ค. ๊ธฐ๋ณธ์ ์ธ ์ทจ์ง€๋Š” ์•„๋ฌด๋Ÿฐ ๊ฐ’์œผ๋กœ๋„ ์ดˆ๊ธฐํ™”๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’๊ณผ ๊ฐ์ฒด๊ฐ€ ์—†๋‹ค๊ณ  ๋‚˜ํƒ€๋‚ด๋Š” ๊ฐ’์„ ๋‹ค๋ฅด๊ฒŒ ํ‘œํ˜„ํ•˜์ž๋Š” ๊ฒ๋‹ˆ๋‹ค.  ์•ฝ๊ฐ„์€ ์ค‘๋ณต๋œ๋‹ค๊ณ  ์ƒ๊ฐ ํ•  ์ˆ˜ ์žˆ์ง€๋งŒ ํ˜„์‹ค์ด ๊ทธ๋ ‡์Šต๋‹ˆ๋‹ค. ์šฐ๋ฆฌ๊ฐ€ ์•Œ์•„์•ผ ํ•  ๊ฒƒ์€ ๊ทธ์ € undefined ๊ณผ null ์˜ ์˜๋„๋ฅผ ๊ธฐ์–ตํ•˜๊ณ  ์žˆ์œผ๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

null ๊ฐ’์€ ๊ฐ์ฒด๊ฐ€ ์žˆ์–ด์•ผ ํ•˜๋Š” ๊ณณ์— ๊ฐ์ฒด๊ฐ€ ์—†์Œ์„ ๋‚˜ํƒ€๋‚ด๋Š” ๊ฒƒ์ด๊ณ ,

undefined ๋Š” ์ดˆ๊ธฐํ™” ๋˜์ง€ ์•Š์€ ๋ณ€์ˆ˜, ์กด์žฌํ•˜์ง€ ์•Š๋Š” ๊ฐ์ฒด์˜ ์†์„ฑ, ๋ฐฐ์—ด ์•ˆ์—์„œ ๊ฐ’์ด ํ• ๋‹น๋˜์–ด ์žˆ์ง€ ์•Š์€ ์š”์†Œ๋ฅผ ๋‚˜ํƒ€๋ƒ…๋‹ˆ๋‹ค.

 

์ˆซ์ž๊ฐ€ ์•„๋‹Œ ์ˆซ์ž NaN

ํ‘œํ˜„์ด ๋ถˆ๊ฐ€๋Šฅํ•œ ์ˆซ์ž ๊ฐ’์ด ์žˆ์Šต๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ด๋Ÿฐ ๊ฐ’๋“ค์„ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†์œผ๋ฏ€๋กœ ๋Œ€์‹  NaN ์ด๋ผ๋Š” ๊ฐ’์„ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. NaN ์€ '์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ(Not A Number)' ์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค. ์˜ˆ๋ฅผ ๋“ค์–ด 0 / 0 ์„ ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ด ๊ฐ’์€ ์ปดํ“จํ„ฐ์—์„œ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์ด ๋ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ์ด ๊ฐ’์„ NaN ์œผ๋กœ ํ‘œํ˜„ํ•ฉ๋‹ˆ๋‹ค.

 

์ด ๊ฐ’์€ ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ๊ฐ’์„ ๋‚˜ํƒ€๋‚ผ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ์ž๊ธฐ ์ž์‹ ๊ณผ ์ผ์น˜ํ•˜์ง€ ์•Š๋Š” ์œ ์ผํ•œ ๊ฐ’์ž…๋‹ˆ๋‹ค. ์ด ๋ง์ด ๋ฌด์Šจ๋ง์ด๋ƒ๋ฉด NaN ๊ณผ NaN ์„ ๋น„๊ตํ•ด๋ณด๋ฉด ๋‘ ๊ฐ’์€ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

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

์•„๋งˆ NaN์„ ๋‹ค๋ฃจ๋Š” ์ผ์ด ์ž์ฃผ ์ƒ๊ธธ ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜์ง€๋Š” ์•Š๊ฒ ์ง€๋งŒ ์–ด๋– ํ•œ ํ˜•ํƒœ๋“  ์ˆซ์ž๋ฅผ ๋‹ค๋ฃจ๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์—…์„ ํ•˜๊ฒŒ ๋œ๋‹ค๋ฉด ์ด ๋ฌธ์ œ๋Š” ๋ฐœ์ƒ ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋ฅผ ๋‹ค๋ฃฐ ๋•Œ์—๋Š” ๊ฒฐ๊ณผ๊ฐ€ NaN ์ด ๋˜๋Š”์ง€ ํ™•์ธํ•ด์•ผ ํ•˜๋Š”๋ฐ ์•„๋ž˜์˜ ๊ฒฝ์šฐ๋Š” ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

if (myNum == NaN) {
  myNum = 0;
}

์„ผ์Šค ์žˆ๋Š” ๋ถ„์ด๋ผ๋ฉด ์–ด๋–ค ๋ณ€์ˆ˜์˜ ๊ฐ’์ด NaN์ธ์ง€ ๊ฒ€์‚ฌํ•˜๊ธฐ ์œ„ํ•ด ์œ„์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์ด๋ฉด ์ถฉ๋ถ„ ํ•  ๊ฑฐ๋ผ๊ณ  ์ƒ๊ฐํ•˜๊ฒ ์ง€๋งŒ, ์ด ์ฝ”๋“œ๋Š” ์ž‘๋™ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ์š”? ์œ„์—์„œ ์„ค๋ช… ํ•œ ๊ฒƒ์ฒ˜๋Ÿผ NaN ์€ ๊ทธ ์–ด๋–ค ๊ฐ’๊ณผ๋„ ์ผ์น˜ํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ์‹ฌ์ง€์–ด ์ž๊ธฐ ์ž์‹ ๊ณผ๋„์š”. ๋”ฐ๋ผ์„œ NaN๊ณผ ๋น„๊ตํ•˜๋Š” ๊ฒƒ์€ ๋ถˆ๊ฐ€๋Šฅ ํ•ฉ๋‹ˆ๋‹ค.

 

๋Œ€์‹  isNaN() ์ด๋ผ๋Š” ํŠน๋ณ„ํ•œ ํ•จ์ˆ˜๋ฅผ ๋‹ค์Œ๊ณผ ๊ฐ™์ด ์‚ฌ์šฉํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

if (isNaN(myNum)) {
  myNum = 0;
}

isNaN() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜์„ธ์š”. ์ด ํ•จ์ˆ˜๋Š” ์ธ์ž๋กœ ๋ฐ›์€ ๊ฐ’์ด ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ฉด true ๋ฅผ ๋ฐ˜ํ™˜ํ•˜๋„๋ก ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.

 

typeof NaN

NaN ์ด ์ˆซ์ž๊ฐ€ ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ์„ ์˜๋ฏธํ•œ๋‹ค๋ฉด ๋„๋Œ€์ฒด ์–ด๋–ค ๊ฑธ ์˜๋ฏธํ•˜๋Š” ๊ฑธ๊นŒ์š”? '์–ด๋–ค ๊ฒƒ์ด ์•„๋‹ˆ๋ผ๋Š” ๊ฒƒ' ๋ณด๋‹ค๋Š” '์–ด๋–ค ๊ฒƒ' ์ด๋ผ๊ณ  ์ด๋ฆ„์„ ๋ถ™์—ฌ ๋†“๋Š”๊ฒŒ ์‚ฌ์‹ค ๋” ์ดํ•ดํ•˜๊ธฐ ์ข‹์Šต๋‹ˆ๋‹ค. ์ด ๋ฌธ์ œ๋Š” ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด์„œ ํ™•์ธ ํ•ด ๋ณผ ํ•„์š”๊ฐ€ ์žˆ์Šต๋‹ˆ๋‹ค.

var num = 0 / 0;
console.log(typeof num);  // number

 

์ฝ”๋“œ๋ฅผ ํ™•์ธํ•ด๋ณด๋ฉด ๋ณด๋‹ค์‹œํ”ผ NaN ์˜ ํƒ€์ž…์€ ์ˆซ์žํ˜•์ž…๋‹ˆ๋‹ค. ์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ(Not A Number)์„ ์˜๋ฏธํ•˜๋Š” NaN ์˜ ์ž๋ฃŒํ˜•์ด ์ˆซ์ž์ž…๋‹ˆ๋‹ค.

์šฐ๋ฆฌ๋Š” ์ด ๋ฌธ์ œ๋ฅผ NaN์˜ ์ด๋ฆ„์ด ๋ถ€์ ์ ˆํ•˜๋‹ค๊ณ  ์ƒ๊ฐํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. '์ˆซ์ž๊ฐ€ ์•„๋‹Œ ๊ฒƒ' ์ด๋ผ๊ธฐ๋ณด๋‹ค๋Š” 'ํ‘œํ˜„ ํ•  ์ˆ˜ ์—†๋Š” ์ˆซ์ž'๊ฐ€ ์•„๋งˆ๋„ ๋” ์ ์ ˆํ•œ ์šฉ์–ด ์ผ ๊ฒ๋‹ˆ๋‹ค.(NaN ์€ ๊ทธ๋ฆฌ ์ž˜ ๋งŒ๋“  ์•ฝ์ž๋Š” ์•„๋‹Œ ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค.)

 

์ •๋ฆฌ ํ•˜์ž๋ฉด ์šฐ๋ฆฌ๋Š” NaN ์„ ์ด๋ ‡๊ฒŒ ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค. "NaN ์€ ์ˆซ์ž๊ฐ’์ด์ง€๋งŒ (์ ์–ด๋„ ์ปดํ“จํ„ฐ๋กœ๋Š”) ํ‘œํ˜„ํ•  ์ˆ˜ ์—†๋Š” ์ˆซ์ž๊ฐ’์ด๋‹ค." 

 

 

์ถœ์ฒ˜: Head First JavaScript Programming

 

'๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐Ÿ…น JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS HTML, DOM  (0) 2021.01.14
JS Object Properties  (0) 2021.01.10
function ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2020.12.25
JavaScript ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2020.12.12
JavaScript is ...  (0) 2020.12.11

 

 

 

JavaScript HTML

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€ HTML์€ ์„œ๋กœ ๋ณ„๊ฐœ์˜ ๊ฒƒ์ž…๋‹ˆ๋‹ค. HTML์€ ํƒœ๊ทธ๋ฅผ ๊ฐ€์ง„ ๋ฌธ์„œ์ด๊ณ  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ฝ”๋“œ์ž…๋‹ˆ๋‹ค. ์ด ๋‘˜์€ ์–ด๋–ป๊ฒŒ ์„œ๋กœ ๋Œ€ํ™”ํ•  ์ˆ˜ ์žˆ์„๊นŒ์š”? ๊ถ๊ทน์ ์œผ๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ๋ฌธ์„œ ๊ฐ์ฒด ๋ชจ๋ธ(Document Object Model, DOM) ์ด๋ผ๊ณ  ๋ถ€๋ฅด๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ํ‘œํ˜„ํ•จ์œผ๋กœ์จ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” HTML๊ณผ ๋‹ค์Œ์˜ ๊ณผ์ •์œผ๋กœ ๋Œ€ํ™”ํ•ฉ๋‹ˆ๋‹ค.

1) ๋ธŒ๋ผ์šฐ์ €์— ์›น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML์„ ํŒŒ์‹ฑํ•˜๊ณ  ํ™”๋ฉด์— ์ถœ๋ ฅ ํ•  ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ํƒœ๊ทธ๋ฅผ ๋‚˜ํƒ€๋‚ด๋Š” ์ผ๋ จ์˜ ๊ฐ์ฒด๋„ ๋งŒ๋“ญ๋‹ˆ๋‹ค. ์ด ๊ฐ์ฒด๋“ค์ด DOM์— ์ €์žฅ๋ฉ๋‹ˆ๋‹ค.

 

2) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” DOM์— ๋“ค์–ด ์žˆ๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋˜ํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” DOM์„ ์ด์šฉํ•ด ์š”์†Œ๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์ œ๊ฑฐํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

3) ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ DOM์„ ์ˆ˜์ •ํ•˜๋ฉด ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋™์ ์œผ๋กœ ๊ฐฑ์‹ ํ•˜๋ฏ€๋กœ ์›น ํŽ˜์ด์ง€์—์„œ ์ƒˆ๋กœ์šด ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

์ค‘์š”ํ•œ ์ ์€ ์›น ํŽ˜์ด์ง€๊ฐ€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ(Data Structure)๋ฅผ ์ œ๊ณตํ•œ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ํŽ˜์ด์ง€์— ์žˆ๋Š” ์š”์†Œ์— ์ ‘๊ทผํ•ด ๋‚ด์šฉ์„ ์ฝ์„ ์ˆ˜ ์žˆ์œผ๋ฉฐ ์›น ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์ด๋‚˜ ๊ตฌ์กฐ๋ฅผ ๋ฐ”๊ฟ€ ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์š”์†Œ ๊ฐ€์ ธ์˜ค๊ธฐ

document ๊ฐ์ฒด๋Š” ๋‚ด์žฅ๋œ ๊ฐ์ฒด๋กœ์„œ ๋‹ค์–‘ํ•œ ๋ฉ”์„œ๋“œ์™€ ์†์„ฑ์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

 

getElemenetById()

var planet = document.getElementById("planet");

getElementById() ๋ฉ”์„œ๋“œ๋Š” DOM ์•ˆ์— ํ•ด๋‹น ์•„์ด๋””๋ฅผ ๊ฐ–๊ณ  ์žˆ๋Š” ๊ฐ์ฒด๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์˜ ๋‹ค๋ฅธ ๊ฐ์ฒด์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ์š”์†Œ ๊ฐ์ฒด๋„ ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ์ด ์†์„ฑ๊ณผ ๋ฉ”์„œ๋“œ๋ฅผ ์ด์šฉํ•ด ์š”์†Œ๋ฅผ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ๋งŒ์•ฝ ํ•ด๋‹น ์•„์ด๋””๊ฐ€ ์กด์žฌ ํ•˜์ง€ ์•Š์„ ๊ฒฝ์šฐ์—๋Š” null ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

์š”์†Œ ๊ฐ์ฒด๋ž€? 

์š”์†Œ ๊ฐ์ฒด๋Š” <p>์–ด๋–ค๋ฌธ์žฅ</p> ์ฒ˜๋Ÿผ HTML ํŒŒ์ผ ์•ˆ์— ์ž…๋ ฅํ•œ ๊ฒƒ์„ ๋ธŒ๋ผ์šฐ์ € ๋‚ด๋ถ€์—์„œ ๊ฐ์ฒด๋กœ ํ‘œํ˜„ํ•œ ๊ฒƒ์„ ๋งํ•ฉ๋‹ˆ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ HTML ํŒŒ์ผ์„ ๋กœ๋”ฉํ•˜๊ณ  ๋ถ„์„ํ•  ๋•Œ ๋ธŒ๋ผ์šฐ์ €๋Š” ์›น ํŽ˜์ด์ง€ ์•ˆ์— ์žˆ๋Š” ๋ชจ๋“  ์š”์†Œ์— ๋Œ€ํ•ด ์š”์†Œ ๊ฐ์ฒด๋ฅผ ๋งŒ๋“ค๊ณ  ์ด ๊ฐ์ฒด๋“ค์„ ๋ชจ๋‘ DOM์— ์ถ”๊ฐ€ํ•ฉ๋‹ˆ๋‹ค. DOM์€ ์š”์†Œ ๊ฐ์ฒด๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ์ปค๋‹ค๋ž€ ํŠธ๋ฆฌ ๊ตฌ์กฐ์ฒด๋ผ๊ณ  ์ƒ๊ฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

innerHTML

planet.innerHTML = "์ง€๊ตฌ";

innerHTML์€ ์š”์†Œ์˜ ๋‚ด์šฉ์„ ์ฝ๊ฑฐ๋‚˜ ๋ณ€๊ฒฝํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ์†์„ฑ์ž…๋‹ˆ๋‹ค. ๋“ค์–ด ์žˆ๋Š” ๊ฐ’์„ ๋ณด๋ฉด HTML ํƒœ๊ทธ๋ฅผ ์ œ์™ธํ•˜๊ณ  ์š”์†Œ์— ๋“ค์–ด ์žˆ๋Š” ๋ชจ๋“  ๋‚ด์šฉ์„ ๋ณผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์•ˆ์ชฝ์— ๋“ค์–ด ์žˆ๋Š” ๋‚ด์šฉ๋งŒ ๋ณผ ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์†์„ฑ๋ช…์ด innerHTML ์ž…๋‹ˆ๋‹ค.

 

setAttribute()

planet.setAttribute("class", "earth");

์–ด๋–ค ์š”์†Œ๋“  setAttribute() ๋ฉ”์„œ๋“œ๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์š”์†Œ์— ์ด๋ฏธ ์žˆ๋Š” ์†์„ฑ์€ ๋ณ€๊ฒฝํ•˜๊ณ  ์š”์†Œ์— ์กด์žฌํ•˜์ง€ ์•Š๋Š” ์†์„ฑ์€ ์ถ”๊ฐ€ํ•ด์ค๋‹ˆ๋‹ค.

 

 

์ฃผ์˜ํ• ์ 

DOM์„ ๋‹ค๋ฃฐ ๋•Œ์—๋Š” ํŽ˜์ด์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋”ฉ๋œ ํ›„์— ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด DOM์ด ์™„์„ฑ๋˜๊ธฐ ์ „์— ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋  ๊ฐ€๋Šฅ์„ฑ์ด ๋†’์Šต๋‹ˆ๋‹ค.

<html>
<head>
<title>ํ–‰์„ฑ</title>
<script>
  var planet = document.getElementById("planet");
  planet.innerHTML = "์ง€๊ตฌ";
</script>
</head>
<body>
<p id="planet">ํ–‰์„ฑ</p>
</body>
</html>

 

ํŽ˜์ด์ง€์˜ <head> ์— ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋„ฃ๊ฒŒ ๋˜๋ฉด ํŽ˜์ด์ง€์˜ body ๋ถ€๋ถ„์ด ๋กœ๋”ฉ๋˜๊ธฐ ์ „์— ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋“œ ์‹คํ–‰๋‹น์‹œ planet ์•„์ด๋””๋ฅผ ๊ฐ€์ง„ ๋ฌธ์žฅ ์š”์†Œ๊ฐ€ ์•„์ง ๋งŒ๋“ค์–ด์ง€์ง€ ์•Š์•˜๊ธฐ ๋•Œ๋ฌธ์— getElementById() ๋ฉ”์„œ๋“œ๋Š” null ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค. ์ดํ›„์— ๋ธŒ๋ผ์šฐ์ €๋Š” ํŽ˜์ด์ง€๋ฅผ ๊ณ„์†ํ•ด์„œ ์ฝ๊ณ  ๊ทธ๋ ค ๋‚˜๊ฐ€๋ฏ€๋กœ ๋‚ด์šฉ์ด ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

 

๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด์„  ์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ <body> ์š”์†Œ ์ œ์ผ ๋งˆ์ง€๋ง‰์œผ๋กœ ์˜ฎ๊ธฐ๊ฑฐ๋‚˜, ๊ฐ€์žฅ ํ™•์‹คํ•œ ๋ฐฉ๋ฒ•์œผ๋กœ "์›น ํŽ˜์ด์ง€๋ฅผ ์™„์ „ํžˆ ๋กœ๋”ฉํ•˜๊ณ  DOM์„ ์ƒ์„ฑํ•œ ํ›„์— ์ด์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๋ผ"๊ณ  ๋ธŒ๋ผ์šฐ์ €์—๊ฒŒ ๋ช…๋ นํ•˜๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

<script> ์ด๋™

<html>
<head>
<title>ํ–‰์„ฑ</title>
</head>
<body>
<p id="planet">ํ–‰์„ฑ</p>
<script>
  var planet = document.getElementById("planet");
  planet.innerHTML = "์ง€๊ตฌ";
</script>
</body>
</html>

window.onload ์†์„ฑ

<html>
<head>
<title>ํ–‰์„ฑ</title>
<script>
  function init() {
    var planet = document.getElementById("planet");
    planet.innerHTML = "์ง€๊ตฌ";
  }
  
  window.onload = init;
</script>
</head>
<body>
<p id="planet">ํ–‰์„ฑ</p>
</body>
</html>

window ๊ฐ์ฒด๋Š” ์›น ํŽ˜์ด์ง€๊ฐ€ ์™„์ „ํžˆ ๋กœ๋”ฉ๋œ ํ›„์— onload ์†์„ฑ์— ํ• ๋‹น๋˜์–ด ์žˆ๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ดˆ๊ธฐํ™” ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•œ ํ›„ window ๊ฐ์ฒด onload ์†์„ฑ์— ์ด ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๊ฒŒ ๋˜๋ฉด ๋ฌธ์ œ๊ฐ€ ํ•ด๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์ดˆ๊ธฐํ™”๋ฅผ ๋ชฉ์ ์œผ๋กœ ์ž‘์„ฑ๋œ ํ•จ์ˆ˜๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ init ์ด๋ผ๋Š” ํ•จ์ˆ˜๋ช…์„ ์‚ฌ์šฉํ•˜์—ฌ ์ •์˜ํ•˜๋ฉฐ window onload ์†์„ฑ์— ํ•จ์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋Š”๋ฐ๋Š” ๊ด„ํ˜ธ๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค. ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋Š” ๊ฒƒ์ด์•„๋‹ˆ๋ผ ํ•จ์ˆ˜๋ฅผ ๊ฐ’์œผ๋กœ ํ• ๋‹นํ•˜๊ธฐ ๋•Œ๋ฌธ์ž…๋‹ˆ๋‹ค.

 

์ฝœ๋ฐฑ(Callback)

onload ์˜ ์ž‘๋™๋ฐฉ์‹์„ ์กฐ๊ธˆ ๋” ์ƒ๊ฐํ•ด๋ณด๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋งค์šฐ ํ”ํ•œ ์ฝ”๋”ฉ ํŒจํ„ด์œผ๋กœ ๊ฑฐ์˜ ๋Š˜ ์‚ฌ์šฉ ๋ฉ๋‹ˆ๋‹ค. ์ด๋ฒคํŠธ์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ๋Š” ๊ฐ์ฒด์—๊ฒŒ ํ•จ์ˆ˜๋ฅผ ์•Œ๋ ค์ฃผ๊ณ  ์ด๋ฒคํŠธ๊ฐ€ ๋ฐœ์ƒํ•˜๊ฒŒ๋˜๋ฉด ๊ฐ์ฒด๋Š” ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•ฉ๋‹ˆ๋‹ค. ์ด๋ ‡๊ฒŒ ์–ด๋– ํ•œ ์ด๋ฒคํŠธ๊ฐ€ ์ผ์–ด๋‚œ ๋’ค์— ์ฒ˜๋ฆฌ๋˜๋Š” ์ฝ”๋“œ๋ฅผ ์ผ๋ฐ˜์ ์œผ๋กœ ์ฝœ๋ฐฑ(Callback) ํ˜น์€ ์ด๋ฒคํŠธ ์ฒ˜๋ฆฌ๊ธฐ(Event Handler) ๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค.

 

 

์ถœ์ฒ˜: Head First JavaScript Programming

 

'๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐Ÿ…น JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS undefined, null, NaN  (0) 2021.01.18
JS Object Properties  (0) 2021.01.10
function ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2020.12.25
JavaScript ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2020.12.12
JavaScript is ...  (0) 2020.12.11

 

 

 

๊ฐ์ฒด (Object)

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

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ๊ฐ์ฒด์˜ ๋น„๋ฐ€์€ ๊ฐ์ฒด๋Š” ๊ทธ์ € ์†์„ฑ(Property)๋ฅผ ๋ชจ์•„ ๋†“์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค.

 

๊ฐ์ฒด์ง€ํ–ฅ์ด๋ž€ ์–ด๋–ค ๊ฒƒ์ธ์ง€?

๊ฐ์ฒด์ง€ํ–ฅ ํ”„๋กœ๊ทธ๋ž˜๋ฐ์—์„œ๋Š” ๋ฌธ์ œ๋ฅผ ๊ฐ์ฒด์˜ ๊ด€์ ์—์„œ ๋ฐ”๋ผ๋ด…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋Š” ์ƒํƒœ์™€ ํ–‰๋™์„ ๊ฐ–๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐฉ์‹์œผ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•˜๋ฉด ์ƒ๋‹นํžˆ ๋†’์€ ์ˆ˜์ค€์—์„œ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค๋‹ˆ๋‹ค. ํ† ์ŠคํŠธ๋ฅผ ๊ตฝ๋Š” ๊ณผ์ •์„ ์ ˆ์ฐจ์ ์ธ ๋ฐฉ์‹๊ณผ ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ๋ฐฉ์‹์œผ๋กœ ์„ค๋ช…ํ•œ๋‹ค๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™๋‹ค.

 

ํ† ์ŠคํŠธ๋ฅผ ๊ตฝ๋Š” ๊ณผ์ •

- ์ ˆ์ฐจ์ ์ธ ๋ฐฉ์‹

1) ์ „์„ ์„ ์ด์šฉํ•ด ์ „์—ด์„ ์„ ๋งŒ๋“ ๋‹ค.

2) ์ „๊ธฐ์— ์—ฐ๊ฒฐํ•œ๋‹ค.

3) ๋นต์„ ์ „์—ด์„ ์— ๊ฐ€๊นŒ์ด ๋†“๋Š”๋‹ค.

4) ํ† ์ŠคํŠธ๊ฐ€ ๋‹ค ๊ตฌ์›Œ์งˆ ๋•Œ๊นŒ์ง€ ๊ธฐ๋‹ค๋ฆฐ ํ›„ ์ „์—ด์„ ์˜ ์ „๊ธฐ๋ฅผ ์ฐจ๋‹จํ•œ๋‹ค.

 

- ๊ฐ์ฒด์ง€ํ–ฅ์ ์ธ ๋ฐฉ์‹

1) ํ† ์Šคํ„ฐ์— ๋นต์„ ๋„ฃ๊ณ  ํ† ์ŠคํŠธ ๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ๋‹ค.

 

๊ฐ์ฒด ์ƒ์„ฑ ๋ฐฉ๋ฒ•

var car = {
  make: "์‰๋ณด๋ ˆ",
  model: "๋ฒจ ์—์–ด",
  year: 1957,
  color: "๋นจ๊ฐ„์ƒ‰",
  passengers: 2,
  convertible: false,
  mileage: 1021
}

๊ฐ์ฒด์˜ ์ง„์ •ํ•œ ๊ฐ•์ ์€ ๊ฐ์ฒด๋ฅผ ๋งŽ์ด ๋งŒ๋“ค๊ณ  ์–ด๋Š ๊ฐ์ฒด์—์„œ๋“  ํ–‰๋™ํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

(ํ•ด๋‹น ๋‚ด์šฉ์€ ๋‚˜์ค‘์— ๋‹ค๋ฃจ๊ณ  ์ง€๊ธˆ ๋ณธ์งˆ์ ์ธ ๊ฐœ๋…์—๋งŒ ์ง‘์ค‘ํ•ฉ๋‹ˆ๋‹ค.)

 

์†์„ฑ์— ์ ‘๊ทผํ•˜๊ธฐ

car.mileage

์  ํ‘œ๊ธฐ๋ฒ•์„ ์ด์šฉํ•ด ๊ฐ์ฒด์˜ ์†์„ฑ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

 

์†์„ฑ๊ฐ’ ๋ณ€๊ฒฝํ•˜๊ธฐ

car.mileage = 10000;

๊ทธ์ € ์†์„ฑ์— ์ƒˆ๋กœ์šด ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์†์„ฑ ์ถ”๊ฐ€ํ•˜๊ธฐ

car.needsWashing = true;

์–ธ์ œ๋“  ์ƒˆ๋กœ์šด ์†์„ฑ์„ ์ถ”๊ฐ€ํ•ด ๊ฐ์ฒด๋ฅผ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ์„ ์ถ”๊ฐ€ํ•˜๋ ค๋ฉด ์ƒˆ๋กœ์šด ์†์„ฑ๋ช…์„ ์ง€์ •ํ•˜๊ณ  ๊ฐ’์„ ํ• ๋‹นํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

๊ธฐ์กด์— ์ด์™€ ๊ฐ™์€ ์†์„ฑ์ด ์—†์—ˆ๋‹ค๋ฉด ๊ฐ์ฒด์— ์ƒˆ๋กœ์šด ์†์„ฑ์ด ์ถ”๊ฐ€๋ฉ๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ๊ธฐ์กด์— ์ด์†์„ฑ์ด ์žˆ์—ˆ๋‹ค๋ฉด ๋‹จ์ง€ ์†์„ฑ์˜ ๊ฐ’์ด ๋ณ€๊ฒฝ๋ฉ๋‹ˆ๋‹ค.

 

์†์„ฑ ์ œ๊ฑฐํ•˜๊ธฐ

delete car.needsWashing;

์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ ค๋ฉด delete ๋ผ๋Š” ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์†์„ฑ์„ ์ œ๊ฑฐํ•˜๋ฉด ์†์„ฑ๊ฐ’๋งŒ ์ œ๊ฑฐ๋˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ์†์„ฑ ์ž์ฒด๊ฐ€ ์—†์–ด์ง‘๋‹ˆ๋‹ค. delete ํ‚ค์›Œ๋“œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํŠน์ง•์„ ๊ฐ€์ง€๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค.

1) ์†์„ฑ์ด ์ œ๋Œ€๋กœ ์ œ๊ฑฐ๋˜๋ฉด delete ํ‚ค์›Œ๋“œ๋Š” true ๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

2) ๋ณดํ˜ธ๋œ ๊ฐ์ฒด์˜ ๊ฒฝ์šฐ delete ํ‚ค์›Œ๋“œ๋กœ ์†์„ฑ์„ ์ œ๊ฑฐํ•  ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ์ด์ฒ˜๋Ÿผ ์ œ๋Œ€๋กœ ์†์„ฑ์„ ์ œ๊ฑฐ ํ•  ์ˆ˜ ์—†์„ ๋•Œ๋Š” false๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

3) ๊ฐ์ฒด์— ์กด์žฌํ•˜์ง€ ์•Š์€ ์†์„ฑ์„ ์ œ๊ฑฐํ•  ๋•Œ์—๋„ true๋ฅผ ๋ฐ˜ํ™˜ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ณ€์ˆ˜์— ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ๋“ค์–ด๊ฐ€๋Š”์ง€

๋ณ€์ˆ˜๋Š” ๊ทธ๋ฆ‡์ฒ˜๋Ÿผ ์–ด๋–ค ๊ฐ’์„ ๋‹ด์Šต๋‹ˆ๋‹ค. ์ˆซ์ž ๋ฌธ์ž์—ด, ๋ถˆ๋ฆฐํ˜•์€ ์ƒ๋‹นํžˆ ์ž‘์œผ๋ฏ€๋กœ ๋‹ด์„ ์ˆ˜ ์žˆ๊ฒ ์ง€๋งŒ ๊ฐ์ฒด๋Š” ์†์„ฑ์ด ๋ฌดํ•œํžˆ ๋“ค์–ด ๊ฐˆ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ํ•˜์ง€๋งŒ ์ด๋Ÿฐ ๊ฐ์ฒด๋„ ๋ณ€์ˆ˜์— ๋‹ด์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. ์ด์œ ๋Š” ์‹ค์ œ๋กœ ๋ณ€์ˆ˜์— ๊ฐ์ฒด๊ฐ€ ๋“ค์–ด๊ฐ€๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๋ผ ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๊ฐ€ ๋“ค์–ด๊ฐ‘๋‹ˆ๋‹ค. ์ฐธ์กฐ๋Š” ์‹ค์ œ ๊ฐ์ฒด์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ๋‚˜ ์ฃผ์†Œ ๊ฐ™์€ ๊ฒƒ์ž…๋‹ˆ๋‹ค. ์ฆ‰, ๋ณ€์ˆ˜๋Š” ๊ฐ์ฒด๋ฅผ ๊ทธ๋Œ€๋กœ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ  ํฌ์ธํ„ฐ๋ฅผ ๋‹ด๊ณ  ์žˆ๋Š” ๊ฒƒ์ž…๋‹ˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋ณ€์ˆ˜ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์ฐธ์กฐ๊ฐ€ ์ •ํ™•ํžˆ ์–ด๋–ป๊ฒŒ ์ƒ๊ฒผ๋Š”์ง€ ์•Œ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค. ๋‹ค๋งŒ ์ด ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฐ์ฒด๋Š” ์•Œ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

์  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ๊ฐ์ฒด์— ๋Œ€ํ•œ ์ฐธ์กฐ๋ฅผ ์ด์šฉํ•ด ๊ฐ์ฒด๋ฅผ ์ฐพ๊ณ , ๊ทธ ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์†์„ฑ์— ์ ‘๊ทผํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

 

๊ฐ์ฒด์— ํ–‰๋™์„ ์ถ”๊ฐ€ํ•˜๊ธฐ

var car = {
  // ...
  started: false,
  
  start: function() {
	this.started = true;
  },
  stop: function() {
  	this.started = false;
  },
  drive: function() {
    if (this.started) {
      alert("go~go!");
    } else {
      alert("์‹œ๋™์ด ๊บผ์ ธ์žˆ์Šต๋‹ˆ๋‹ค.");
    }
  }

๊ฐ์ฒด์•ˆ์— ๋“ค์–ด๊ฐ€๋Š” ํ•จ์ˆ˜๋Š” ์ผ๋ฐ˜์ ์œผ๋กœ ๋ฉ”์„œ๋“œ(Method)๋ผ๊ณ  ๋ถ€๋ฆ…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์ง€ํ–ฅ ๋ฐฉ๋ฒ•๋ก ์—์„œ ๋„๋ฆฌ ์‚ฌ์šฉํ•˜๋Š” ๋ช…์นญ์ž…๋‹ˆ๋‹ค. ๋ฉ”์„œ๋“œ๋Š” ๊ฐ์ฒด์— ๋“ค์–ด ์žˆ๋Š” ์†์„ฑ๋ช…์— ํ• ๋‹น๋œ ํ•จ์ˆ˜ ์ผ ๋ฟ์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด ์•ˆ์— ์กด์žฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ฉ”์„œ๋“œ๋ผ๊ณ  ๋ถ€๋ฅผ ๋ฟ์ž…๋‹ˆ๋‹ค. ์†์„ฑ์€ ๋ณ€์ˆ˜์™€ ๊ฐ’์„ ๋ถ€๋ฅด๋Š” ๋‹ค๋ฅธ์ด๋ฆ„์ธ๊ฒƒ์ฒ˜๋Ÿผ ํ•จ์ˆ˜ ๋„ ๊ฐ’์ด๋ผ๊ณ  ์ƒ๊ฐํ•˜๋ฉด ๋ฉ๋‹ˆ๋‹ค.

 

์œ„์™€ ๊ฐ™์ด ์†์„ฑ์— ํ•จ์ˆ˜๋ฅผ ์ •์˜ ํ•œ๋‹ค๋ฉด ๊ฐ์ฒด์˜ ํ–‰๋™์„ ์ถ”๊ฐ€ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 

์ผ๋ฐ˜์ ์œผ๋กœ ํ•จ์ˆ˜๋Š” ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋ณ€์ˆ˜์ด๋ฆ„์„ ์ฐพ์„ ๋•Œ ์ง€์—ญ๋ณ€์ˆ˜, ํ•จ์ˆ˜ํŒŒ๋ผ๋ฏธํ„ฐ, ์ „์—ญ๋ณ€์ˆ˜ ์ˆœ์œผ๋กœ ์ฐพ์•„๊ฐ‘๋‹ˆ๋‹ค. ๋งŒ์•ฝ this ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ์ฒด ์ž์‹ ์˜ ์†์„ฑ์ด๋ผ๊ณ  ๋ช…์‹œ์ ์œผ๋กœ ์•Œ๋ ค์ฃผ์ง€ ์•Š๋Š”๋‹ค๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋ฅผ ์ฐพ์„ ์ˆ˜ ์—†๋Š” ์ ์„ ์ฃผ์˜ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

 

 

๋ฉ”์„œ๋“œ๋ฅผ ์™œ ๋งŒ๋“ค์–ด์•ผ ํ•˜์ง€?

started ์†์„ฑ์„ ์ง์ ‘ ๋ฐ”๊พธ๋ฉด ๋˜๋Š”๋ฐ ์šฐ๋ฆฌ๋Š” ์™œ ๋ฉ”์„œ๋“œ๋ฅผ ๋งŒ๋“ค์–ด์•ผํ• ๊นŒ์š”?

car.start();

// or 

car.started = true;

์†์„ฑ์„ ๋ฐ”๊พธ๊ธฐ ์œ„ํ•ด ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์€ ์บก์Šํ™”(Encapsulation)์˜ ํ•œ ์‚ฌ๋ก€์ž…๋‹ˆ๋‹ค. ๊ฐ์ฒด๋ฅผ ์บก์Šํ™”ํ•˜๋ฉด ๊ฐ์ฒด๊ฐ€ ์–ด๋–ป๊ฒŒ ์“ฐ์ผ์ง€ ๊ฑฑ์ •ํ•˜์ง€ ์•Š๊ณ  ์ฝ”๋“œ์˜ ์œ ์ง€๋ณด์ˆ˜์„ฑ๊ณผ ํ™•์žฅ์„ฑ์„ ํ–ฅ์ƒ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. '์ž๋™์ฐจ๋ฅผ ์‹œ๋™์„ ๊ฑธ๋ ค๋ฉด started ๋ณ€์ˆ˜๋ฅผ true๋กœ ์„ค์ •ํ•ด์•ผ ํ•œ๋‹ค'๋Š” ๊ฒƒ์„ ์•„๋Š” ๊ฒƒ๋ณด๋‹ค ์ด๋Ÿฐ ๋‚ด๋ถ€ ์‚ฌ์ •์„ ์ž˜ ์•„๋Š” start() ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ํŽธ์ด ๋” ์ข‹์Šต๋‹ˆ๋‹ค. ์•ˆ์ „๋ฒจํŠธ, ์—ฐ๋ฃŒ, ๋ฐฐํ„ฐ๋ฆฌ, ์—”์ง„ ์˜จ๋„ ๋“ฑ ๋งŽ์€ ๊ฒƒ์„ ๊ฒ€์‚ฌํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ์ฒ˜๋Ÿผ ์‹œ๋™์„ ๊ฑฐ๋Š” ๊ณผ์ •์ด ๋” ๋ณต์žกํ•ด ์ง„๋‹ค๊ณ  ์ƒ๊ฐํ•˜๋ฉด ์ดํ•ด๊ฐ€ ์‰ฝ์Šต๋‹ˆ๋‹ค.

 

 

๊ฐ์ฒด์˜ ์†์„ฑ์„ ๋ชจ๋‘๋‚˜์—ดํ•˜๊ธฐ

for (let prop in car) {
  console.log(prop + ": " + car[prop]);
}

for in ๋ฐ˜๋ณต๋ฌธ์€ ๊ฐ์ฒด ์•ˆ์— ๋“ค์–ด ์žˆ๋Š” ์†์„ฑ๋“ค์„ ์ž„์˜์˜ ์ˆœ์„œ๋กœ ๋ฐ˜๋ณตํ•ฉ๋‹ˆ๋‹ค. ๋Œ€๊ด„ํ˜ธ  ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์†์„ฑ์— ์ ‘๊ทผ ํ•  ์ˆ˜ ์ž‡์Šต๋‹ˆ๋‹ค.

์†์„ฑ์— ์ ‘๊ทผํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ์  ํ‘œ๊ธฐ๋ฒ•๋„ ์žˆ์ง€๋งŒ ๋Œ€๊ด„ํ˜ธ ํ‘œ๊ธฐ๋ฒ•์„ ์‚ฌ์šฉํ•˜์—ฌ ์ ‘๊ทผ ํ•  ์ˆ˜ ๋„ ์žˆ์Šต๋‹ˆ๋‹ค.

 

 

์ถœ์ฒ˜: Head First JavaScript Programming

 

'๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐Ÿ…น JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS undefined, null, NaN  (0) 2021.01.18
JS HTML, DOM  (0) 2021.01.14
function ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2020.12.25
JavaScript ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2020.12.12
JavaScript is ...  (0) 2020.12.11

 

 

Function ์‚ฌ์šฉํ•˜๊ธฐ

ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์•„์ฃผ ๋‹ค์–‘ํ•œ ํ™˜๊ฒฝ์—์„œ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ์ด ์ฝ”๋“œ๋Š” ๊ณ„์†ํ•ด์„œ ์žฌ์‚ฌ์šฉ ํ•  ์ˆ˜ ์žˆ๊ณ , ๊ด€๋ฆฌํ•˜๊ธฐ๋„ ํ›จ์”ฌ ์‰ฝ๊ณ , ๋ณต์žกํ•œ ๊ฒƒ์„ ์ฒ˜๋ฆฌํ•ด์ฃผ๋Š” ์ฝ”๋“œ์— ๊ฐ„๋‹จํžˆ ์ด๋ฆ„๋งŒ ๋ถ™์—ฌ ๋†“๊ณ  ์ค‘์š”ํ•œ ์ผ์— ์ง‘์ค‘ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ค€๋‹ค. ์ด๋ ‡๊ฒŒ ๋ณต์žกํ•œ ๋ถ€๋ถ„์„ ๊ฐ„๋‹จํžˆ ์ƒ๊ฐํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๋ฐฉ๋ฒ•์„ ์ถ”์ƒํ™” ๋ผ๊ณ  ํ•œ๋‹ค.  ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์–ด๋–ค ์ฝ”๋“œ๋ฅผ ๊ฐ€์ ธ์™€ ์ด๋ฆ„์„ ๋ถ™์ด๊ณ , ๊ทธ ์ฝ”๋“œ๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ์ด๋ฆ„๋งŒ ๋ถˆ๋Ÿฌ์ฃผ๋ฉด ๋œ๋‹ค.

 

 

ํŒŒ๋ผ๋ฏธํ„ฐ(Parameter) ์™€ ์ธ์ž(Agument)

ํ•จ์ˆ˜๋ฅผ ์ •์˜ํ•  ๋•Œ ์‚ฌ์šฉ๋˜๋Š” ๋ณ€์ˆ˜๋ฅผ ํŒŒ๋ผ๋ฏธํ„ฐ(Parameter)๋ผ๊ณ  ํ•˜๋ฉฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•  ๋•Œ์— ์ „๋‹ฌํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ธ์ž(agument) ๋ผ๊ณ ํ•œ๋‹ค.

 

ํŒŒ๋ผ๋ฏธํ„ฐ(Parameter)

function bark(name, weight) {
}

 

์ธ์ž(Agument)

bark("ํ•ดํ”ผ", 23);

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํ•จ์ˆ˜๋Š” ๊ฐ’์œผ๋กœ ์ „๋‹ฌํ•œ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ธ์ž๋ฅผ ์ „๋‹ฌํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ํ•จ์ˆ˜์— ๊ฐ’์œผ๋กœ ์ธ์ž๋ฅผ ์ „๋‹ฌ(Pass-By-Value) ํ•œ๋‹ค. ๋‹ค์‹œ ๋งํ•˜๋ฉด ํŒŒ๋ผ๋ฏธํ„ฐ์— ์ธ์ž๋ฅผ ๋ณต์‚ฌํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” ์ƒˆ๋กœ์šด ๋ณ€์ˆ˜์ด๋‹ค. ํ•จ์ˆ˜๋Š” ํŒŒ๋ผ๋ฏธํ„ฐ ์•ž์— var ํ‚ค์›Œ๋“œ๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š์•„๋„ ์ ์ ˆํžˆ ๋ณ€์ˆ˜๋ฅผ ๋งŒ๋“ค๊ณ  ์ดˆ๊ธฐํ™”ํ•˜๋Š” ๊ณผ์ •์„ ์ฒ˜๋ฆฌํ•ด ์ค€๋‹ค.

ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉ ํ•  ์ ์— ํŒŒ๋ผ๋ฏธํ„ฐ ๋ณด๋‹ค ์ ๊ฒŒ ์ธ์ž๋ฅผ ๋ณด๋‚ด๋ฉด ์ธ์ž๋ฅผ ๋ฐ›์ง€ ๋ชปํ•œ ํŒŒ๋ผ๋ฏธํ„ฐ๋Š” undefined ๊ฐ’์œผ๋กœ ์„ค์ •๋˜๋ฉฐ ํŒŒ๋ผ๋ฏธํ„ฐ๋ณด๋‹ค ๋งŽ์€ ์ธ์ž๋ฅผ ๋ณด๋‚ด๋ฉด ๋‚จ๋Š” ์ธ์ž๋“ค์€ ๋ฌด์‹œ๋œ๋‹ค.

return ๋ฌธ์„ ํ†ตํ•˜์—ฌ ๋ฌด์–ธ๊ฐ€๋ฅผ ๋Œ๋ ค ์ค„ ์ˆ˜ ๋„ ์žˆ์œผ๋ฉฐ return ๋ฌธ์ด ์—†๋Š” ํ•จ์ˆ˜๋Š” undefined ๊ฐ’์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค.

 

์ „์—ฐ๋ณ€์ˆ˜์™€ ์ง€์—ญ๋ณ€์ˆ˜

๋ณ€์ˆ˜๋ฅผ ์–ด๋””์—์„œ ์ •์˜ํ•˜๋Š๋ƒ์— ๋”ฐ๋ผ ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„๊ฐ€ ์ •ํ•ด์ง„๋‹ค. ๋ณ€์ˆ˜์˜ ๋ฒ”์œ„์— ๋”ฐ๋ผ ์ฝ”๋“œ์˜ ์–ด๋Š ๋ถ€๋ถ„์—์„œ ์ด ๋ณ€์ˆ˜๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€ ๊ฒฐ์ •๋œ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ ๋ณ€์ˆ˜์˜  ๋ฒ”์œ„๋Š”(Scope)๋Š” ํ•จ์ˆ˜ ๋ฐ–์—์„œ ์ •์˜ํ•œ ๋ณ€์ˆ˜๋Š” ์ „์—ญ ๋ฒ”์œ„(Global Scope), ํ•จ์ˆ˜ ์•ˆ์—์„œ ์ •์˜ํ•œ ๋ณ€์ˆ˜๋Š” ์ง€์—ญ ๋ฒ”์œ„(Local Scope)๋ฅผ ๊ฐ–๋Š”๋‹ค๋Š” ์ ์— ์ฃผ์˜ํ•ด์•ผ ํ•œ๋‹ค.

ํ•จ์ˆ˜ ๋ฐ”๊นฅ์—์„œ  ์„ ์–ธํ•˜๋ฉด ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋˜๋ฉฐ ํ•จ์ˆ˜ ์•ˆ์—์„œ ์„ ์–ธํ•˜๋ฉด ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ๋œ๋‹ค.

 

ํŽ˜์ด์ง€๊ฐ€ ์—ด๋ ค ์žˆ๋Š” ๋™์•ˆ ์ „์—ญ ๋ณ€์ˆ˜๋Š” ์‚ด์•„ ์žˆ๋‹ค.

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ํŽ˜์ด์ง€์— ๋กœ๋”ฉ๋  ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง€๊ฐ€ ์‚ฌ๋ผ์งˆ ๋•Œ ์ „์—ญ ๋ณ€์ˆ˜์˜ ์ƒ๋ช…๋„ ๋๋‚˜๊ฒŒ ๋œ๋‹ค.

๋˜‘๊ฐ™์€ ํŽ˜์ด์ง€๋ฅผ ๋‹ค์‹œ ๋กœ๋”ฉํ•˜๋”๋ผ๋„ ๊ธฐ์กด ์ „์—ญ ๋ณ€์ˆ˜๋Š”  ์‚ฌ๋ผ์ง€๊ณ  ์ „์—ญ ๋ณ€์ˆ˜๋“ค์ด ์ƒˆ๋กœ ๋งŒ๋“ค์–ด ์ง„๋‹ค.

 

์ผ๋ฐ˜์ ์œผ๋กœ ์ง€์—ญ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋˜๋ฉด ์‚ฌ๋ผ์ง„๋‹ค.

์ง€์—ญ ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜๊ฐ€ ํ˜ธ์ถœ๋  ๋•Œ ์ƒ์„ฑ๋˜๊ณ  ํ•จ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋˜๋ฉด ์‚ฌ๋ผ์ง„๋‹ค(๊ฐ’์„ ๋ฐ˜ํ™˜ ํ•˜๋Š”์ง€ ์—ฌ๋ถ€๋Š” ์ƒ๊ด€ ์—†๋‹ค). ๊ทธ๋ ‡์ง€๋งŒ ๋ณ€์ˆ˜๊ฐ€ ์‚ฌ๋ผ์ง€๊ธฐ ์ „์— ์ง€์—ญ ๋ณ€์ˆ˜์˜ ๊ฐ’์„ ๊ฐ€์ ธ์™€ ํ•จ์ˆ˜๊ฐ€ ์ข…๋ฃŒ๋  ๋•Œ ๋ฐ˜ํ™˜ ํ•  ์ˆ˜ ์žˆ๋‹ค. ์—ฌ๊ธฐ์—์„œ '์ผ๋ฐ˜์ ์œผ๋กœ' ๋ผ๊ณ  ๋งํ•˜๋Š” ๊ฒƒ์€ ์ง€์—ญ๋ณ€์ˆ˜๋ผ๊ณ  ํ•ด๋„ ์ˆ˜๋ช…์„ ์•ฝ๊ฐ„ ์—ฐ์žฅ์‹œํ‚ค๋Š” ๋ฐฉ๋ฒ•์€ ์žˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค.

 

์ง€์—ญ๋ณ€์ˆ˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฐ๋‹ค.

์„ ์–ธ๋œ ์ „์—ญ๋ณ€์ˆ˜ ๋ช…์œผ๋กœ ์ง€์—ญ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธ ํ•  ๊ฒฝ์šฐ ์ง€์—ญ ๋ณ€์ˆ˜๊ฐ€ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๊ฐ€๋ฆฐ๋‹ค(Shadow)๊ณ  ๋งํ•œ๋‹ค.

์ง€์—ญ๋ณ€์ˆ˜ ๋•Œ๋ฌธ์— ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ๋ณผ ์ˆ˜ ์—†๊ฒŒ ๋˜๋ฏ€๋กœ ๊ฐ€๋ฆฐ๋‹ค๋ผ๊ณ  ํ‘œํ˜„ํ•œ๋‹ค).

var beanCounter = 10;

function getNumberOfItems(ordertype) {
  var beanCounter = 0;
  if (ordertype == "order") {
    // beanCounter๋ฅผ ์ด์šฉํ•ด ์—ฐ์‚ฐ์„ ์ˆ˜ํ–‰
  }
  return beanCounter;
}

 

ํ•จ์ˆ˜์˜ ์„ ์–ธ์œ„์น˜

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๊ธฐ ์ „์— ์„ ์–ธํ•˜๋“  ์‚ฌ์šฉํ•œ ํ›„์— ์ •์˜ํ•˜๋“  ์‹ ๊ฒฝ ์“ฐ์ง€ ์•Š๋Š”๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด ๋‹ค์Œ๊ณผ ๊ฐ™์€ ์ฝ”๋“œ๋ฅผ ๋ณธ๋‹ค๋ฉด ์ƒ๋‹นํžˆ ์ด์ƒํ•ด ๋ณด์ผ ์ˆ˜ ์žˆ๋‹ค. 

var radius = 5;
var area = circleArea(radius);
alert(area);

function circleArea(r) {
  var a = Math.PI * r * r;
  return a;
}

๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์›น ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•˜๊ณ  ํŒŒ์ผ ๊ผญ๋Œ€๊ธฐ์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์‹œ์ž‘ํ•˜๋Š”๋ฐ ์‚ฌ์‹ค์€ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์›น ํŽ˜์ด์ง€๋ฅผ ๋‘ ๋‹จ๊ณ„๋กœ ์ฒ˜๋ฆฌํ•œ๋‹ค. ์ฒซ๋ฒˆ์งธ๋‹จ๊ณ„๋Š” ๋ชจ๋“  ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ์ฝ์–ด๋“ค์ด๊ณ  ๋‘๋ฒˆ์งธ ๋‹จ๊ณ„์—์„œ๋Š” ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•˜๊ธฐ ์‹œ์ž‘ํ•œ๋‹ค. ๊ทธ๋ ‡๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜๋Š” ํŒŒ์ผ ์–ด๋””์— ๋†“์•„๋„ ์ƒ๊ด€์ด ์—†๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ๋ณ€์ˆ˜์™€ ํ•จ์ˆ˜๋ฅผ ์ •๋ฆฌํ•˜๋Š” ๋ฐ ์žˆ์–ด์„œ ์ƒ๋‹นํžˆ ๋Š์Šจํ•œ ํŽธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฝ”๋“œ๋ฅผ ๊น”๋”ํ•˜๊ฒŒ ์ •๋ฆฌํ•˜๊ณ  ํ™•์žฅํ•˜๊ธฐ ์‰ฝ๋„๋ก ๋งŒ๋“œ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•œ๋‹ค. ์ „์—ญ ๋ณ€์ˆ˜๋Š” ๊ผญ๋Œ€๊ธฐ์—, ํ•จ์ˆ˜๋Š” ํ•จ๊ป˜ ์žˆ๋Š” ๊ฒƒ์„ ์ข‹์•„ํ•˜๊ณ , ์ง€์—ญ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜์˜ ๊ผญ๋Œ€๊ธฐ์— ์„ ์–ธํ•˜๋Š” ๊ทœ์น™์„ ์ง€ํ‚ค๋Š” ํŽธ์ด ์ข‹๋‹ค.

 

 

์ถœ์ฒ˜: Head First JavaScript Programming

 

'๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐Ÿ…น JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS undefined, null, NaN  (0) 2021.01.18
JS HTML, DOM  (0) 2021.01.14
JS Object Properties  (0) 2021.01.10
JavaScript ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2020.12.12
JavaScript is ...  (0) 2020.12.11

 

 

๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ˆ˜๋งŽ์€ ๋‚ด์žฅ ํ•จ์ˆ˜ ์ค‘์—๋Š” ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•˜๊ธฐ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” ํ•จ์ˆ˜๋„ ์žˆ๋‹ค.

 

var random = Math.random();

๋จผ์ € Math.random() ํ•จ์ˆ˜๋กœ ์‹œ์ž‘ํ•œ๋‹ค. ์ด ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ•˜๋ฉด ์†Œ์ˆ˜ ํ˜•ํƒœ์˜ ๋‚œ์ˆ˜๊ฐ€ ๋ฐ˜ํ™˜๋œ๋‹ค.

๋ฌธ์ œ๋Š” ๋ฐ˜ํ™˜๋˜๋Š” ๊ฐ’์ด 0.128, 0.830, 0.9, 0.42์™€ ๊ฐ™์€ ์†Œ์ˆ˜๋ผ๋Š” ์ ์ด๋‹ค. ์ด ์ˆซ์ž๋Š” 0์—์„œ 1์‚ฌ์ด์˜ ๊ฐ’์ด๋‹ค(1์€ ํฌํ•จ๋˜์ง€ ์•Š์Œ).

๋”ฐ๋ผ์„œ ์ด ๊ฐ’์„ ์ด์šฉํ•ด์„œ ๋‚œ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ•์ด ํ•„์š”ํ•˜๋‹ค.

 

var random = Math.random() * 5;

 

๋‚œ์ˆ˜์— 5๋ฅผ ๊ณฑํ•˜๋ฉด 0์—์„œ 5์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ์–ป๊ฒŒ๋œ๋‹ค.(5๋Š” ์ œ์™ธ). ์ฆ‰ 0.13983, 4.231, 2.3451, ํ˜น์€ 4.999์™€ ๊ฐ™์€ ์ˆซ์ž๊ฐ€ ๋‚˜์˜จ๋‹ค.

์ด์ œ ์†Œ์ˆ˜์  ์ดํ•˜์˜ ์ˆซ์ž๋“ค์„ ์ž˜๋‚˜๋‚ด ์ •์ˆ˜ ๋ถ€๋ถ„๋งŒ ์ทจํ•˜๋ฉด ๋œ๋‹ค. ์†Œ์ˆ˜์  ์•„๋ž˜๋ฅผ ์ž˜๋ผ๋‚ด๋ ค๋ฉด ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์— ๋‚ด์žฅ๋œ Math.floor() ํ•จ์ˆ˜๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด ๋œ๋‹ค.

 

var random = Math.floor(Math.random() * 5);

Math.floor() ํ•จ์ˆ˜๋ฅผ ์ด์šฉํ•˜๋ฉด ์ด ์ˆซ์ž์—์„œ ์†Œ์ˆ˜์  ์ดํ•˜๋ฅผ ๋•Œ์–ด๋‚ธ ์ •์ˆ˜๋ฅผ ์ทจํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ๋ฅผ ๋“ค์–ด 0.13983 ์€ 0, 2.34 ๋Š” 2, 4.999 ๋Š” 4๊ฐ€ ๋œ๋‹ค.

 

 

์ •๋ฆฌํ•˜์ž๋ฉด Math.random() ํ•จ์ˆ˜๋Š” 0์—์„œ 1์‚ฌ์ด์˜ ์ˆซ์ž๋ฅผ ์ƒ์„ฑํ•˜์ง€๋งŒ 1์€ ์ƒ์„ฑํ•˜์ง€ ์•Š๋Š”๋‹ค.

Math.random() ํ•จ์ˆ˜๊ฐ€ ์ƒ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 0.999··· ์ด๋‹ค. ์ด ์ˆซ์ž์— 5๋ฅผ ๊ณฑํ•˜๋ฉด ๋‚˜์˜ค๋Š” ๊ฐ€์žฅ ํฐ ์ˆ˜๋Š” 4.999···์ธ ๊ฒƒ์ด๋‹ค.

Math.floor() ํ•จ์ˆ˜๋Š” ์†Œ์ˆซ์  ์ดํ•˜๋ฅผ ๋‚ด๋ฆผํ•˜๋ฏ€๋กœ 1.2๋„ 1์ด๋˜์ง€๋งŒ 1.9999๋„ 1์ด ๋œ๋‹ค. ๋”ฐ๋ผ์„œ 0์—์„œ 4.999··· ์ˆซ์ž๊ฐ€ ์ƒ์„ฑ๋œ๋‹ค๋ฉด ์†Œ์ˆซ์  ์ดํ•˜๋ฅผ ๋‚ด๋ฆผํ•ด์„œ ๋‚˜์˜จ ์ˆซ์ž๋Š” 0์—์„œ 4์‚ฌ์ด์˜ ์ˆซ์ž๊ฐ€ ๋œ๋‹ค.

 

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์—์„œ๋Š” ๋Œ€๋ถ€๋ถ„ ์ด์™€ ๊ฐ™์€ ๋ฐฉ๋ฒ•์„ ์ด์šฉํ•˜์—ฌ ๋‚œ์ˆ˜๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.

 

 

์ถœ์ฒ˜: Head First JavaScript Programming

 

'๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐Ÿ…น JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS undefined, null, NaN  (0) 2021.01.18
JS HTML, DOM  (0) 2021.01.14
JS Object Properties  (0) 2021.01.10
function ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2020.12.25
JavaScript is ...  (0) 2020.12.11

 

์›น ํŽ˜์ด์ง€๋ผ๊ณ  ํ•ด์„œ ๊ทธ์ € ๊ฐ€๋งŒํžˆ ์žˆ๋Š” ๊ฒƒ๋งŒ ๋ณด์—ฌ์ฃผ์ง€๋Š” ์•Š๋Š”๋‹ค. ๋ฉ‹์ง„ ์›น ํŽ˜์ด์ง€๋Š” ์—ญ๋™์ ์ด๋ฉฐ, ๋Œ€ํ™”์‹์œผ๋กœ ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ฐ˜์‘ํ•ด์•ผ ํ•œ๋‹ค. ๋ฐ”๋กœ ์ด๋Ÿฐ ์ผ์„ ํ•ด์ฃผ๋Š” ๊ฒŒ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์ด๋‹ค. ๋จผ์ € ์›น ํŽ˜์ด์ง€ ์ƒํƒœ๊ณ„์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๊ฐ€ ์–ด๋–ค ์—ญํ• ์„ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž.

 

HTML

HTML(Hyper Text Markup Language)์„ ์‚ฌ์šฉํ•ด ๋‹จ๋ฝ, ์ œ๋ชฉ, ์„น์…•๊ณผ ๊ฐ™์€ ๊ตฌ์กฐ๋ฅผ ์ด์šฉํ•˜์—ฌ ํŽ˜์ด์ง€์˜ ๋‚ด์šฉ์„ ๋งŒ๋“ ๋‹ค.

 

CSS

์ƒ‰์ƒ, ํฐํŠธ, ๊ฒฝ๊ณ„, ํญ, ํŽ˜์ด์ง€ ๋ฐฐ์น˜ ๋“ฑ HTML์„ ํ™”๋ฉด์— ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ์ง€์ •ํ•˜๋Š” ๋ฐ CSS(Cascading Style Sheets)๋ฅผ ์ด์šฉํ•œ๋‹ค. ์ฆ‰ CSS๋Š” ๋ฌธ์„œ์˜ ์Šคํƒ€์ผ์„ ์ง€์ •ํ•  ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋ฉฐ, ํŽ˜์ด์ง€ ๊ตฌ์กฐ์™€๋Š” ๋ถ„๋ฆฌ๋˜์–ด ์žˆ๋‹ค.

 

JavaScript

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

 

 

์ž‘์„ฑ๋ฐฉ๋ฒ•

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์„ธ๊ณ„์—์„œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ƒ๋‹นํžˆ ๋…ํŠนํ•˜๋‹ค. ์ผ๋ฐ˜์ ์ธ ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด๋กœ๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๊ณ , ์ปดํŒŒ์ผํ•˜๊ณ , ๋งํฌํ•˜๊ณ , ์„ค์น˜ํ•œ๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ํ›จ์”ฌ ๋” ์œ ๋™์ ์ด๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋กœ ํ”„๋กœ๊ทธ๋ž˜๋ฐํ•  ๋•Œ์—๋Š” ์›น ํŽ˜์ด์ง€ ์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ฐ”๋กœ ๋„ฃ๊ณ  ๋ธŒ๋ผ์šฐ์ €๋กœ ์ฝ์œผ๋ฉด ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ž‘์„ฑํ•œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค.

 

1. ์ž‘์„ฑ

HTML ํƒœ๊ทธ์™€ CSS ์Šคํƒ€์ผ์„ ์ด์šฉํ•ด ๋Š˜ ํ•ด์˜ค๋˜ ๋ฐฉ์‹๋Œ€๋กœ ์›น ํŽ˜์ด์ง€๋ฅผ ๋งŒ๋“ ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ์›น ํŽ˜์ด์ง€ ์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋„ฃ๋Š”๋‹ค. HTML๊ณผ  CSS ์ฒ˜๋Ÿผ ์›น ํŽ˜์ด์ง€์— ๋ณด์—ฌ์ค„ ๋‚ด์šฉ์„ ํ•œ ํŒŒ์ผ์— ๋ชจ๋‘ ๋„ฃ๊ฑฐ๋‚˜ ์•„๋‹ˆ๋ฉด ๋ณ„๋„์˜ (์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ) ํŒŒ์ผ์— ๋„ฃ์„ ์ˆ˜ ์žˆ๋‹ค.

 

2. ๋กœ๋”ฉ

๋ธŒ๋ผ์šฐ์ €๋กœ ํŽ˜์ด์ง€๋ฅผ ์—ฐ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋ณด๋ฉด ๋ฐ”๋กœ ํŒŒ์‹ฑํ•˜๊ณ  ์‹คํ–‰ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค. HTML ์ด๋‚˜ CSS์™€ ๋งˆ์ฐฌ๊ฐ€์ง€๋กœ ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ์ฝ”๋“œ์— ์žˆ๋Š” ์˜ค๋ฅ˜๋ฅผ ๋ฐœ๊ฒฌํ•˜๋”๋ผ๋„ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ, HTML, CSS๋ฅผ ์ตœ๋Œ€ํ•œ ๋งŽ์ด ์ฝ์œผ๋ ค๊ณ  ํ•œ๋‹ค. ๋ธŒ๋ผ์šฐ์ €๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ์•„๋ฌด๊ฒƒ๋„ ๋ณด์—ฌ์ฃผ์ง€ ๋ชปํ•˜๋Š” ๊ฒƒ์„ ๊ฐ€์žฅ ์‹ซ์–ด ํ•œ๋‹ค.

 

3. ์‹คํ–‰

ํŽ˜์ด์ง€ ์•ˆ์— ์žˆ๋Š” ์ฝ”๋“œ๋ฅผ ๋ณด์ž๋งˆ์ž ๋ธŒ๋ผ์šฐ์ €๋Š” ์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•  ์ค€๋น„๋ฅผ ํ•œ๋‹ค. ๊ทธ๋ฆฌ๊ณ  ํŽ˜์ด์ง€๋ฅผ ๋ณด๊ณ  ์žˆ๋Š” ๋‚ด๋‚ด ์ด ์ฝ”๋“œ๋ฅผ ์‹คํ–‰ํ•œ๋‹ค. ์ดˆ๊ธฐ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ์™€๋Š” ๋‹ฌ๋ฆฌ ์ตœ์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ๋Š” ์ปดํŒŒ์ผํ•˜๋Š” ํ”„๋กœ๊ทธ๋ž˜๋ฐ ์–ธ์–ด์— ์œก๋ฐ•ํ•˜๋Š” ์†๋„๋ฅผ ๋‚ด๊ธฐ ์œ„ํ•ด ๊ณ ๊ธ‰ ์ปดํŒŒ์ผ๋Ÿฌ ๊ธฐ์ˆ ์„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ์ƒ๋‹นํžˆ ๋น ๋ฅด๋‹ค.

 

 

์–ด๋–ค ๋ฐฉ๋ฒ•์œผ๋กœ ํŽ˜์ด์ง€์— JavaScript ์ฝ”๋“œ๋ฅผ ๋„ฃ์„ ์ˆ˜ ์žˆ์„๊นŒ?

<script> ํƒœ๊ทธ๋ฅผ ์ด์šฉํ•ด <head> ๋‚˜ <body>์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์€ ์ด๋ฏธ ์•Œ๊ณ  ์žˆ๋‹ค. ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ์ถ”๊ฐ€ํ•  ์ˆ˜ ์žˆ๋Š” ๊ณณ์„ ๋ชจ๋‘ ํ™•์ธํ•ด ๋ณธ๋‹ค.

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>
<!-- 1 -->
<script>
์ฝ”๋“œ;
</script>
  
<!-- 3 -->
<script src="mycode.js"></script>
</head>
<body>
<!-- 2 -->
<script>
 ์ฝ”๋“œ;
 ์ฝ”๋“œ;
</script>

<!-- 4 -->
<script src="somecode.js"></script>
</body>
</html>
cs

 

โ‘  <head> ์š”์†Œ ์•ˆ์— ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋„ฃ๋Š”๋‹ค.

<head> ์•ˆ์— <script> ์š”์†Œ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ๊ฐ€์žฅ ๋„๋ฆฌ ์‚ฌ์šฉ๋œ๋‹ค. ๊ทธ๋Ÿฌ๋ฉด ์ฝ”๋“œ๋ฅผ ์ฐพ๊ธฐ๋„ ์‰ฝ๊ณ  ํ•ฉ๋ฆฌ์ ์ธ ์œ„์น˜์ธ ๊ฒƒ ๊ฐ™๋‹ค. ๊ทธ๋Ÿฐ๋ฐ ์ด ์œ„์น˜๊ฐ€ ์–ธ์ œ๋‚˜ ๊ฐ€์žฅ ์ข‹์€ ๊ฒƒ์€ ์•„๋‹ˆ๋‹ค.

 

โ‘ก <body>์š”์†Œ ์•ˆ์— ์ฝ”๋“œ๋ฅผ ์ง์ ‘ ๋„ฃ๋Š”๋‹ค.

<body> ์š”์†Œ ์•ˆ์— <script> ์š”์†Œ๋ฅผ ์ถ”๊ฐ€ํ•˜๊ณ  ๊ทธ ์•ˆ์— ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ฝ”๋“œ๋ฅผ ๋„ฃ๋Š” ๋ฐฉ๋ฒ•์ด ์•ฝ๊ฐ„ ๋” ์ข‹๋‹ค. ์™œ ๊ทธ๋Ÿด๊นŒ? ๋ธŒ๋ผ์šฐ์ €๊ฐ€ ํŽ˜์ด์ง€๋ฅผ ๋กœ๋”ฉํ•  ๋•Œ์—๋Š” <body> ์š”์†Œ๋ฅผ ์ฝ๊ธฐ ์ „์— <head> ์š”์†Œ๋ฅผ ๋ชจ๋‘ ์ฝ๋Š”๋‹ค. ๊ทธ๋Ÿฌ๋ฉด <head> ์š”์†Œ ์•ˆ์˜ ์ฝ”๋“œ๊ฐ€ ๋‹ค ์‹คํ–‰๋˜๊ณ  ๋‚˜์„œ์•ผ ์‹ค์ œ ํŽ˜์ด์ง€์˜ ๋ชจ์Šต์ด ๋ณด์ธ๋‹ค. <body> ์š”์†Œ ์•ˆ์— ์žˆ๋Š” HTML์„ ๋จผ์ € ์ฝ์€ ํ›„ ์ฝ”๋“œ๊ฐ€ ์‹คํ–‰๋˜๋ฏ€๋กœ ์‹คํ–‰๋˜๊ธฐ ์ „์˜ ํŽ˜์ด์ง€ ๋‚ด์šฉ์„ ๋ชจ๋‘ ๋ณผ ์ˆ˜ ์žˆ๋‹ค.

 

โ‘ข <head> ์š”์†Œ ์•ˆ์—์„œ ์™ธ๋ถ€ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•œ๋‹ค.

์ด ๋ฐฉ๋ฒ•์€ CSS ํŒŒ์ผ์— ์—ฐ๊ฒฐํ•˜๋Š” ๊ฒƒ๊ณผ ๋˜‘๊ฐ™๋‹ค. <script> ํƒœ๊ทธ ์•ˆ์— src์†์„ฑ ๊ฐ’์ด CSS ํŒŒ์ผ ๋Œ€์‹  ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์— ๋Œ€ํ•œ URL์ด๋ผ๋Š” ์ ๋งŒ ๋‹ค๋ฅด๋‹ค. ์ฝ”๋“œ๊ฐ€ ๋ณ„๋„์˜ ์™ธ๋ถ€ ํŒŒ์ผ์— ์žˆ์œผ๋ฉด ๊ด€๋ฆฌํ•˜๊ธฐ ํ›จ์”ฌ ๋” ์‰ฌ์›Œ์ง€๊ณ , ์—ฌ๋Ÿฌ ํŽ˜์ด์ง€์—์„œ ํ•จ๊ป˜ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค. ๊ทธ๋ ‡์ง€๋งŒ ์ด ๋ฐฉ๋ฒ•๋„ ํŽ˜์ด์ง€์˜ <body>๋ฅผ ์ฝ์–ด์„œ ๋ณด์—ฌ์ฃผ๊ธฐ ์ „์— ์ฝ”๋“œ๋ฅผ ๋กœ๋”ฉํ•˜๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

 

โ‘ฃ <body> ์š”์†Œ ์•ˆ์—์„œ ์™ธ๋ถ€ํŒŒ์ผ์„ ์—ฐ๊ฒฐํ•œ๋‹ค.

๊ฐ€์žฅ์ข‹์€ ๋ฐฉ๋ฒ•์ด๋‹ค. ์–ด๋–คํ•œ ํŽ˜์ด์ง€์—๋„ ํฌํ•จ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋Š” ์œ ์ง€๋ณด์ˆ˜์„ฑ์ด ๋›ฐ์–ด๋‚œ ์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ํŒŒ์ผ์„ ๊ฐ–๊ฒŒ ๋˜๊ณ , ์ด ํŒŒ์ผ์€ ํŽ˜์ด์ง€์˜ ๋ณธ๋ฌธ์ด ๋ชจ๋‘ ๋กœ๋”ฉ๋˜์–ด ๋ณด์ด๊ณ  ๋‚œ ํ›„์— ์‹คํ–‰๋œ๋‹ค.

 

 

 

์ฆ๊ฑฐ๊ฐ€ ์žˆ๊ธฐ๋Š” ํ•˜์ง€๋งŒ ๋‚œ ์•„์ง๋„ <head>๊ฐ€ ์ฝ”๋“œ๋ฅผ ๋„ฃ๊ธฐ์— ๊ฐ€์žฅ ์ข‹์€ ๊ณณ์ธ๊ฑฐ ๊ฐ™๋‹ค.

 

 

์ถœ์ฒ˜: Head First JavaScript Programming

 

'๐Ÿ’ป ํ”„๋กœ๊ทธ๋ž˜๋ฐ > ๐Ÿ…น JavaScript' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

JS undefined, null, NaN  (0) 2021.01.18
JS HTML, DOM  (0) 2021.01.14
JS Object Properties  (0) 2021.01.10
function ์‚ฌ์šฉํ•˜๊ธฐ  (0) 2020.12.25
JavaScript ๋‚œ์ˆ˜ ์ƒ์„ฑํ•˜๊ธฐ  (0) 2020.12.12

+ Recent posts