scope

0

javascript

๋ชฉ๋ก ๋ณด๊ธฐ
8/34
post-thumbnail
post-custom-banner

๐Ÿ“ scope

๋ณ€์ˆ˜ ์ ‘๊ทผ ๊ทœ์น™์— ๋”ฐ๋ฅธ ์œ ํšจ ๋ฒ”์œ„


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

๋ณ€์ˆ˜์™€ ๊ทธ๊ฐ’์ด ์–ด๋””์„œ๋ถ€ํ„ฐ ์–ด๋””๊นŒ์ง€ ์œ ํšจํ•œ์ง€๋ฅผ ํŒ๋‹จํ•˜๋Š” ๋ฒ”์œ„๋ฅผ scope๋ฒ”์œ„ ๋ผ๊ณ  ํ•ฉ๋‹ˆ๋‹ค.

javascrip๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ํ•จ์ˆ˜๊ฐ€ ์„ ์–ธ๋˜๋Š” ๋™์‹œ์— ์ž์‹ ๋งŒ์˜ scope๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.


๐Ÿ“ ์ง€์—ญ๋ณ€์ˆ˜์™€ ์ „์—ญ๋ณ€์ˆ˜

ํ•จ์ˆ˜ greetSomone์•ˆ์—๋Š” ์ง€์—ญ ๋ณ€์ˆ˜ (Local Scope)๋ผ๊ณ  ํ•˜๊ณ , ๊ทธ๋ฐ–์— ์ „์ฒด๋ฅผ ์ „์—ญ๋ณ€์ˆ˜(Global Scope)๋ผ๊ณ  ํ•œ๋‹ค.

let name =  'Hi';// ์ „์—ญ๋ณ€์ˆ˜
function name(){
	let name = 'Hello'; // ์ดˆ๊ธฐํ™” ์‹ (์ง€์—ญ๋ณ€์ˆ˜)
  	consol.log(name); // Hello
}
consol.log(name); // Hi
name()
consol.log(name);//Hi

-> ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ ํ• ๋•Œ๋งŒ ํ•จ์ˆ˜ ์•ˆ์— ์žˆ๋Š” ์ง€์—ญ ๋ณ€์ˆ˜์ธ name(Hello)์ด ์ถœ๋ ฅ๋˜๊ณ , ํ•จ์ˆ˜ ์ถœ๋ ฅ์ด ์•„๋‹Œ name์„ ํ˜ธ์ถœ ํ• ๋•Œ๋Š” ์ „์—ญ๋ณ€์ˆ˜์— ์„ ์–ธ๋˜์–ด ์žˆ๋Š” name(Hi)๊ฐ€ ์ถœ๋ ฅ๋œ๋‹ค!

let name =  'Hi';// ์ „์—ญ๋ณ€์ˆ˜
function name(){
	name = 'Hello'; // ์ดˆ๊ธฐํ™” ํ•˜์ง€ ์•Š์Œ (์žฌ์„ ์–ธ)
  	consol.log(name); // Hello
}
consol.log(name); // Hi
name()
consol.log(name);//Hello

-> ํ•จ์ˆ˜ ์•ˆ์— let ์ด๋ผ๋Š” ์„ ์–ธ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ์ดˆ๊ธฐํ™” ํ•˜์—ฌ ์„ ์–ธ ํ•˜์ง€ ์•Š๊ณ  ๋ฐ”๊นฅ name์— ์žฌ์„ ์–ธ์„ ํ•˜์˜€์œผ๋ฏ€๋กœ name์€ Hello๋กœ ๋ณ€๊ฒฝ ๋˜์—ˆ๋‹ค

  • ์•ˆ์ชฝ ์Šค์ฝ”ํ”„์—์„œ๋Š” ๋ฐ”๊นฅ ์Šค์ฝ”ํ”„ ์ฐธ์กฐ๊ฐ€ ๊ฐ€๋Šฅํ•˜๋‹ค. ๊ทธ๋Ÿฌ๋‚˜ ๋ฐ”๊นฅ์ชฝ์—์„œ๋Š” ์•ˆ์ชฝ ์ฐธ์กฐ๊ฐ€ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
  • ์ง€์—ญ๋ณ€์ˆ˜๋Š” ํ•จ์ˆ˜๋‚ด์—์„œ ์ „์—ญ๋ณ€์ˆ˜ ๋ณด๋‹ค ๋” ๋†’์€ ์šฐ์„  ์ˆœ์œ„๋ฅผ ๊ฐ€์ง‘๋‹ˆ๋‹ค.
  • ์ „์—ญ๋ณ€์ˆ˜๋Š” ์ตœ์ƒ๋‹จ์˜ scope๋กœ ์–ด๋””์„œ๋“  ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“ let

for(let i = 0; i < 5; i++){
  console.log (i);
}
console.log(i); // {} ๋ฅผ ๋ฒ—์–ด ๋‚ซ์œผ๋ฏ€๋กœ i ์‚ฌ์šฉ๋ถˆ๊ฐ€

Block :{} ์ค‘๊ด„๋กœํ˜ธ ์‹œ์ž‘ํ•˜๊ณ  ๋๋‚˜๋Š” ๋‹จ์œ„

๐Ÿ“ var

for(var i = 0; i < 5; i++){
  console.log (i);
}
console.log(i); // 5

var์€ ๋ฒ”์œ„๊ฐ€ ๋ฒ—์–ด๋‚˜๋„ ๊ฐ™์€ ํ•จ์ˆ˜ ๋‚ด์—์„œ๋Š” ์‚ฌ์šฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๐Ÿ“const

  • let๊ณผ ๊ฐ™์ด block๋ฒ”์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
  • ํ•œ๋ฒˆ ์ดˆ๊ธฐํ™” ํ•˜๋ฉด ๊ฐ’์ด ๋ณ€ํ•˜์ง€ ์•Š๋Š”๋‹ค. ์žฌ์ •์˜๋ถˆ๊ฐ€!!

๐Ÿ’• ๋ณ€์ˆ˜ ์„ ์–ธ์‹œ ์ฃผ์˜์  !

function name(){
	name = 'Hello'; // ์ „์—ญ๋ณ€์ˆ˜ ์„ ์–ธ์œผ๋กœ๋จ
  	consol.log(name); // Hello
}
consol.log(name); // Hello

let, var, const๋กœ ์„ ์–ธํ•˜์ง€ ์•Š์œผ๋ฉด ์ „์—ฐ๋ณ€์ˆ˜๊ฐ€ ๋˜์–ด Block์„ ๋ฒ—์–ด๋‚˜์„œ ์ „์—ญ์—์„œ ์‚ฌ์šฉ๊ฐ€๋Šฅํ•ด์ง„๋‹ค.

๊ทผ๋ฐ, ์˜ค๋ฅ˜๋Š” ์•ˆ๋– ์„œ ๊ฐ€๋” ์ด๋Ÿฐ ์‹ค์ˆ˜๋ฅผ ํ•  ์ˆ˜๊ฐ€ ์žˆ๋‹ค. ๊ทธ๋ž˜์„œ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ ํ•˜๊ธฐ ์œ„ํ•ด

์ž๋ฐ”์Šคํฌ๋ฆฝํŠธ ์ƒ๋‹จ์— โ€˜use strictโ€™ ์“ฐ๋ฉด ๋ฌธ๋ฒ•์ ์œผ๋กœ ์‹ค์ˆ˜ํ•  ์ˆ˜ ์žˆ๋Š” ๋ถ€๋ถ„๋“ค์„ ์—๋Ÿฌ๋กœ ํŒ๋‹จํ•ด์ค€๋‹ค.

profile
๐Ÿ‘ฉ๐Ÿปโ€๐Ÿ’ปํ•ญ์ƒ๋ฐœ์ „ํ•˜์ž ๐Ÿ”ฅ
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€