๋ชฉ์ฐจ
JS์์์ ์ค์ฝํ์ ๋ํด์ ์์๋ณด์!
1. ๋ธ๋ก๋ฌธ (Block)
๋ธ๋ก๋ฌธ์ 0๊ฐ ์ด์์ statement(๊ตฌ๋ฌธ)์ ๋ฌถ์ ๊ฒ์ ์ด์ผ๊ธฐํ๊ณ ,
ํ ์์ ์ค๊ดํธ(brackets)๋ก ๊ฐ์ธ์ ธ์๋ค.
{
...
}
์ผ๋ฐ์ ์ผ๋ก ์ ์ด๋ฌธ, ํจ์ ๋ฑ์ ์ฌ์ฉ์ด ๋๊ณ
๋ธ๋ก๋ฌธ์ ์๋ก์ด ์ค์ฝํ๋ฅผ ์์ฑํ๋ค
1) ์ค์ฝํ (Scope)
์ค์ฝํ๋ ๋ณ์๋ ์์, ์๋ณ์๋ค์ด ์ ํจํ๊ฒ ์ฌ์ฉ๋ ์ ์๋ ๋ฒ์๋ฅผ ๋งํ๋ค.
์ฆ, ๋ธ๋ก๋ฌธ์ ์์ฑํ ๊ฒฝ์ฐ ์๋ก์ด ๋ฒ์๋ฅผ ์์ฑํ๊ฒ ๋๋ ๊ฒ์ด๋ค.
ํน์ง 1_ ๋ธ๋ก ์์ ์ ์ธ๋ ๋ณ์์ ์์๋ฅผ ๊ทธ ๋ฐ์์ ์ฌ์ฉ ๋ถ๊ฐ
{
let x = 1;
console.log(x);
}
console.log(x);
>>> 1
>>> Uncaught ReferenceError: x is not defined
์์ ์์์ฒ๋ผ ๋ธ๋ก ์์ ์ ์ธ๋ ๋ณ์์ ์์๋ฅผ ๊ทธ ๋ฐ์์๋ ์ฌ์ฉ์ด ๋ถ๊ฐํ๋ค.
ํน์ง 2_ ๋ธ๋ก ์์ชฝ์์๋ ๋ฐ์์ ์ ์ธ๋ ๊ฒ ์ฌ์ฉ ๊ฐ๋ฅ
let x = 1;
{
console.log(x);
}
console.log(x);
>>> 1
>>> 1
์์ฒ๋ผ ๋ธ๋ก ์์ชฝ์์๋ ๋ฐ์์ ์ ์ธ๋ ๊ฒ์ ์ ๊ทผ์ ํ ์ ์๋ค.
ํน์ง 3_ ๋ธ๋ก ์์ชฝ์์ ์๋ก ์ ์ธ๋ ๊ฒฝ์ฐ ๋ฐ๊นฅ ๊ฒ ์์ ๋ฎ์ด์์
ํ ๋น์ด ์๋ ์ ์ธ์ ๊ดํ ํน์ง์ด๋ค.
const x = 0;
let y = 'A';
console.log(x, y);
{
const x = 1; // ์์๋ ์ฌ์ ์ธ์ด ๊ฐ๋ฅํ๋ค.
let y = 'B';
console.log(x, y);
}
console.log(x, y);
>>> 0 'A'
>>> 1 'B'
>>> 0 'A'
์์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ ์ ์๋ ๊ฒ์
๋ธ๋ก ์์์๋ ๋ฐ์์ ์ด๋ฏธ ์ฌ์ฉํ '์ด๋ฆ'์ ๋ค์ ์ฌ์ฉํ ์ ์๋ค๋ ๊ฒ์ด๋ค.
์์๋ ๋ณ์์ ๊ตฌ๋ถ ์์ด ๊ฐ๋ฅํ๋ค.
๋ธ๋ก ์์์ ์ ๊ทผ ์ ์ฃผ์ํ ์
์์์ผ ๊ฒฝ์ฐ์๋ ๋น์ฐํ ์ฌํ ๋น์ด ๋ถ๊ฐํ๋ค.
const x = 0;
{
x = 1; // ์์์ ์๋ก ํ ๋นํ ์ ์๋ค.
console.log(x);
}
>>> Uncaught TypeError: Assignment to constant variable.
๋ธ๋ก ์์์ ๊ธฐ์กด ๋ณ์์ ๊ฐ์ ํ ๋นํ ๊ฒฝ์ฐ
์ฌ์ ์ธ์ด ์๋๋ฏ๋ก ๋ฐ์ ๋ณ์ ๊ฐ์ ๋ฐ๊พธ๋ ๊ฒ์ด๋ค.
let y = 0;
console.log(y);
{
y = 1; // ์์์ ์๋ก ํ ๋นํ ์ ์๋ค.
console.log(y);
}
console.log(y);
>>> 0
>>> 1
>>> 1 //๊ฐ์ด ๋ณ๊ฒฝ๋จ.
์ค์ฝํ ์ฒด์ธ
๋ธ๋ก์ผ๋ก ์ธํ ์ค์ฝํ๋ ๋ฉ๋ชจ๋ฆฌ ๊ด์ ์์ ๋ณด์์ ๋
์ง์ญ ๋ณ์๋ค์ ์คํ ์์ญ์ ์์นํ๋ค.
๊ทธ์ ๋ฐ๋ฅธ ์์๋ฅผ ์ดํด๋ณด๋ฉด
let a = 0;
let b = 1;
let c = 2;
console.log('1 : ', a, b, c);
{
let a = 9;
let b = 8;
console.log('2 : ', a, b, c);
{
let a = 10;
console.log('3 : ', a, b, c);
}
console.log('4 : ', a, b, c);
}
console.log('5 : ', a, b, c);
>>> 1 : 0 1 2
>>> 2 : 9 8 2
>>> 3 : 10 8 2
>>> 4 : 9 8 2
>>> 5 : 0 1 2
์์ ๊ฒฐ๊ณผ๋ฅผ ํตํด ์ ์ ์๋ ๊ฒ์ ํ์ฌ ๋ธ๋ก์์ ํธ์ถํ ๋ณ์๊ฐ ์กด์ฌํ์ง ์์ ๊ฒฝ์ฐ
ํ์ฌ์ ์์ ๋ฒ์๋ฅผ ์กฐ์ฌํ์ฌ ๊ฐ์ ํ์ธํ๋ค. (์กด์ฌX = ํ๋์ฉ ๊ฑฐ์ฌ๋ฌ ์ฌ๋ผ๊ฐ๋ฉฐ ์กฐ์ฌ)
์ด๋ ์คํ์ผ๋ก ์ธํ ๊ฒฐ๊ณผ๋ผ๊ณ ํ ์ ์๋ค.
Global ๋ณ์/์์
๋ฐ์ดํฐ ์์ญ์ ์์น
์ฝ๋ ์ด๋ ๊ณณ์์๋ ์ ๊ทผ ๊ฐ๋ฅ
ํ๋ก๊ทธ๋จ ์ข ๋ฃ ์ ์๋ฉธ
Local ๋ณ์/์์
์คํ ์์ญ์ ์์น
์ ์ธ๋ ๋ธ๋ก ๋ด์์๋ง ์กด์ฌ
๋ธ๋ก ์ข ๋ฃ ์ ์๋ฉธ
'๐ | WEB DEV > Vanilla JS' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (19)_ case๋ฌธ, ๊ฐ์ฒด ํ์ฉ ๋ณํ case๋ฌธ (0) | 2023.03.07 |
---|---|
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (18)_ ์ ์ด๋ฌธ๊ณผ ์ข์ ์ฝ๋? (0) | 2023.03.04 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (16)_์์ํ์ ๊ณผ ์ฐธ์กฐํ์ (0) | 2023.03.01 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (15)_์ฐ์ฐ์(์ผํ, null๋ณํฉ(??) ) (2) | 2023.02.26 |
JS_๊ธฐ๋ณธ ๋ฌธ๋ฒ (14)_๋ถ๋ฆฌ์ธ์ ์ฌ์ฉ๋๋ ์ฐ์ฐ์๋ค (0) | 2023.02.26 |
๋๊ธ