Jieunny์ ๋ธ๋ก๊ทธ
Unit 9. [JS]์ค์ฝํ ๋ณธ๋ฌธ
๐ฃ ์ค์ฝํ
โ๏ธ ๋ณ์์ ์ ํจ๋ฒ์
๋ฒ์๋ ์ค๊ดํธ ๋๋ ํจ์์ ์ํด ๋๋์ด์ง๊ณ ๊ทธ ๋ฒ์๋ฅผ ์ค์ฝํ ๋ผ๊ณ ๋ถ๋ฅธ๋ค.
๋ฐ๊นฅ์ชฝ ์ค์ฝํ์์ ์ ์ธํ ๋ณ์๋ ์์ชฝ ์ค์ฝํ์์ ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
์์ชฝ ์ค์ฝํ์์ ์ ์ธํ ๋ณ์๋ ๋ฐ๊นฅ์ชฝ ์ค์ฝํ์์ ์ฌ์ฉ ๋ถ๊ฐ๋ฅํ๋ค.
์ค์ฒฉ์ด ๊ฐ๋ฅํ๋ค.
๊ฐ์ฅ ๋ฐ๊นฅ์ชฝ ์ค์ฝํ๋ ์ ์ญ ์ค์ฝํ(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' ๋ผ๊ณ ์ ๋ ฅํ๋ฉด ์๊ฒฉํ๊ฒ ํ๋จํ๋ค.
โ๏ธ ์ ์ธ ์๋ ๋ณ์์ ํ ๋น๋ ์๋ฌ๋ก ํ๋จํ๋ค.
'CodeStates > learning contents' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
Unit 9. [JS]ES6 ์ฃผ์๋ฌธ๋ฒ (0) | 2022.12.23 |
---|---|
Unit 9. [JS]ํด๋ก์ (0) | 2022.12.23 |
Unit 9. [JS]์์ ์๋ฃํ๊ณผ ์ฐธ์กฐ ์๋ฃํ (0) | 2022.12.22 |
Unit 8. [JS]๊ฐ์ฒด (2) | 2022.12.22 |
Unit 8. [JS]๋ฐฐ์ด (0) | 2022.12.22 |