Jieunny์˜ ๋ธ”๋กœ๊ทธ

Unit 9. [JS]์Šค์ฝ”ํ”„ ๋ณธ๋ฌธ

CodeStates/learning contents

Unit 9. [JS]์Šค์ฝ”ํ”„

Jieunny 2022. 12. 22. 15:47

๐Ÿ“ฃ ์Šค์ฝ”ํ”„

โœ”๏ธ ๋ณ€์ˆ˜์˜ ์œ ํšจ๋ฒ”์œ„

๋ฒ”์œ„๋Š” ์ค‘๊ด„ํ˜ธ ๋˜๋Š” ํ•จ์ˆ˜์— ์˜ํ•ด ๋‚˜๋ˆ„์–ด์ง€๊ณ  ๊ทธ ๋ฒ”์œ„๋ฅผ ์Šค์ฝ”ํ”„ ๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค.
๋ฐ”๊นฅ์ชฝ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ์•ˆ์ชฝ ์Šค์ฝ”ํ”„์—์„œ ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•˜๋‹ค.
์•ˆ์ชฝ ์Šค์ฝ”ํ”„์—์„œ ์„ ์–ธํ•œ ๋ณ€์ˆ˜๋Š” ๋ฐ”๊นฅ์ชฝ ์Šค์ฝ”ํ”„์—์„œ ์‚ฌ์šฉ ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.
์ค‘์ฒฉ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.
๊ฐ€์žฅ ๋ฐ”๊นฅ์ชฝ ์Šค์ฝ”ํ”„๋Š” ์ „์—ญ ์Šค์ฝ”ํ”„(Global Scope) -> ์ „์—ญ ๋ณ€์ˆ˜
์ „์—ญ์ด ์•„๋‹Œ ๋‹ค๋ฅธ ์Šค์ฝ”ํ”„๋Š” ์ „๋ถ€ ์ง€์—ญ ์Šค์ฝ”ํ”„(Local Scope) -> ์ง€์—ญ ๋ณ€์ˆ˜
์ง€์—ญ ๋ณ€์ˆ˜๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋ณด๋‹ค ๋” ๋†’์€ ์šฐ์„ ์ˆœ์œ„๋ฅผ ๊ฐ€์ง„๋‹ค.
let name = '๊น€์ฝ”๋”ฉ';

function showName() {
  let name = '๋ฐ•ํ•ด์ปค'; // ์ง€์—ญ ๋ณ€์ˆ˜
  console.log(name); // ๋‘ ๋ฒˆ์งธ ์ถœ๋ ฅ
}

console.log(name); // ๊น€์ฝ”๋”ฉ
showName();	// ๋ฐ•ํ•ด์ปค
console.log(name); // ๊น€์ฝ”๋”ฉ

๐Ÿšจ ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋‹ค์‹œ let์œผ๋กœ ์„ ์–ธํ•ด์คฌ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์•ˆ์— ์„ ์–ธ๋œ name์€ ํ•จ์ˆ˜ ์•ˆ์—์„œ๋งŒ ์œ ํšจํ•˜๋‹ค.

โžฐ ์ฒซ๋ฒˆ์งธ๋Š” ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ๋œ name์„ ์ถœ๋ ฅํ•œ๋‹ค.

โžฐ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœํ–ˆ๊ธฐ ๋•Œ๋ฌธ์— ํ•จ์ˆ˜ ์•ˆ์— ์ง€์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธ ๋œ name์„ ์ถœ๋ ฅํ•œ๋‹ค.

โžฐ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์ถœ๋ ฅํ•œ๋‹ค. ์ง€์—ญ ๋ณ€์ˆ˜์— ์„ ์–ธ๋œ name์€ ์•ˆ์ชฝ ์Šค์ฝ”ํ”„ ์ด๋ฏ€๋กœ ์ ‘๊ทผ์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค.

 

let name = '๊น€์ฝ”๋”ฉ';

function showName() {
  name = '๋ฐ•ํ•ด์ปค';
  console.log(name); // ๊น€์ฝ”๋”ฉ
}

console.log(name); // ๋ฐ•ํ•ด์ปค
showName();
console.log(name); // ๋ฐ•ํ•ด์ปค

๐Ÿšจ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์„ ์–ธํ•œ name์„ ํ•จ์ˆ˜ ์•ˆ์—์„œ๋„ ์‚ฌ์šฉํ•˜๊ณ  ์žˆ์œผ๋ฏ€๋กœ ๋งˆ์ง€๋ง‰์— name์„ ์ถœ๋ ฅํ•˜๋ฉด ํ•จ์ˆ˜ ์•ˆ์—์„œ ๋ฐ”๋€ name์ด ์ถœ๋ ฅ๋œ๋‹ค.

 

๐Ÿ“ฃ ์Šค์ฝ”ํ”„์˜ ์ข…๋ฅ˜

โœ”๏ธ ๋ธ”๋ก ์Šค์ฝ”ํ”„ : ์ค‘๊ด„ํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋ฒ”์œ„๊ฐ€ ๊ตฌ๋ถ„๋œ๋‹ค.

โœ”๏ธ ํ•จ์ˆ˜ ์Šค์ฝ”ํ”„ 

  ๐Ÿšจ ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„๋กœ ์ทจ๊ธ‰๋œ๋‹ค.

 

โœ”๏ธ var ํ‚ค์›Œ๋“œ๋Š” let๊ณผ ๋‹ค๋ฅด๊ฒŒ for๋ฌธ์ด ๋งŒ๋“ค์–ด๋‚ธ ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๋ฌด์‹œํ•œ๋‹ค. (for๋ฌธ ๋ฐ–์—์„œ๋„ ์‚ฌ์šฉ๊ฐ€๋Šฅ)

  ๐Ÿšจ var ํ‚ค์›Œ๋“œ๋Š” ํ™”์‚ดํ‘œ ํ•จ์ˆ˜๋ฅผ ์ œ์™ธํ•œ ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๋ฌด์‹œํ•œ๋‹ค.

 

โœ”๏ธ var ํ‚ค์›Œ๋“œ๋ณด๋‹ค๋Š” let ํ‚ค์›Œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์ž

  โžฐ let ํ‚ค์›Œ๋“œ๋Š” ๋ธ”๋ก ์Šค์ฝ”ํ”„๋ฅผ ๋ฌด์‹œํ•˜์ง€ ์•Š๋Š”๋‹ค.

  โžฐ let ํ‚ค์›Œ๋“œ๋Š” ์žฌ์„ ์–ธ์„ ๋ฐฉ์ง€ํ•œ๋‹ค.

 

โœ”๏ธ const : ๋ณ€ํ•˜์ง€ ์•Š๋Š” ๊ฐ’(์ƒ์ˆ˜)

  โžฐ ์žฌํ• ๋‹น์ด ๋ถˆ๊ฐ€๋Šฅํ•˜๋‹ค. (์žฌํ• ๋‹น ํ•  ๊ฒฝ์šฐ TypeError ๋ฐœ์ƒ)

 

๐Ÿ“ฃ ๋ณ€์ˆ˜ ์„ ์–ธ์—์„œ ์ฃผ์˜ํ•  ์ 

1๏ธโƒฃ var๋กœ ์„ ์–ธ๋œ ์ „์—ญ ๋ณ€์ˆ˜ ๋ฐ ์ „์—ญ ํ•จ์ˆ˜๋Š” window ๊ฐ์ฒด์— ์†ํ•˜๊ฒŒ ๋œ๋‹ค.

โœ”๏ธ window ๊ฐ์ฒด : ๋ธŒ๋ผ์šฐ์ €์˜ ์ฐฝ์„ ์˜๋ฏธํ•˜๋Š” ๊ฐ์ฒด

 

2๏ธโƒฃ ์ „์—ญ ๋ณ€์ˆ˜์— ๋„ˆ๋ฌด ๋งŽ์€ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜์ง€ ์•Š๋Š”๋‹ค.

โœ”๏ธ side effect : ๋„ˆ๋„๋‚˜๋„ ๊ฐ™์€ ์ด๋ฆ„์œผ๋กœ ์ „์—ญ ๋ณ€์ˆ˜๋ฅผ ์„ ์–ธํ•˜๋ฉด ์ถฉ๋Œ์ด ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ๋‹ค.

 

3๏ธโƒฃ ์„ ์–ธ ํ‚ค์›Œ๋“œ(var, let, const) ์—†์ด ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜์ง€ ์•Š๋Š”๋‹ค.

โœ”๏ธ ์„ ์–ธ ์—†์ด ๋ณ€์ˆ˜๋ฅผ ํ• ๋‹นํ•˜๋ฉด ํ•ด๋‹น ๋ณ€์ˆ˜๋Š” var๋กœ ์„ ์–ธํ•œ ์ „์—ญ ๋ณ€์ˆ˜๋กœ ์ทจ๊ธ‰๋œ๋‹ค.

 

4๏ธโƒฃ ์‹ค์ˆ˜๋ฅผ ๋ฐฉ์ง€ํ•˜๊ธฐ ์œ„ํ•ด Strict Mode๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

โœ”๏ธ js ํŒŒ์ผ ์ƒ๋‹จ์— 'use strict' ๋ผ๊ณ  ์ž…๋ ฅํ•˜๋ฉด ์—„๊ฒฉํ•˜๊ฒŒ ํŒ๋‹จํ•œ๋‹ค.

โœ”๏ธ ์„ ์–ธ ์—†๋Š” ๋ณ€์ˆ˜์˜ ํ• ๋‹น๋„ ์—๋Ÿฌ๋กœ ํŒ๋‹จํ•œ๋‹ค.