์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ํ์ตํ๊ธฐ ์ํด์ ์ฑ
์ ๋ดค์ ๋, ๋๋ถ๋ถ์ ์ฑ
์์ var์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ผ๊ณ ๊ฐ๋ฅด์น๋ค.
ํ์ง๋ง ๋ด๊ฐ ์์ ์ ์๋ง๋ฅผ ์ค๋นํ ๋ ์๋ง ์ํ์ ์ํด ์ ๊น ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ๊ณต๋ถํ๋ ์ ์ด ์๋๋ฐ, ๊ทธ ๋ var๋์ let์ผ๋ก ๋ณ์๋ฅผ ์ ์ธํ๋ผ๊ณ ํ๋ ๊ธ์ ๋ณธ ์ ์ด ์์๋ค. ์ค๋์ ๊ทธ ๋ ์ฐจ์ด์ ์ ํ์คํ ๋น๊ตํด๋ณด๊ณ ๋์ด๊ฐ๋ณด์.
๊ฒฐ๋ก
var | let | const | |
์ฌ์ ์ธ | O | X | X |
์ฌํ ๋น | O | O | X |
์์กด ๋ฒ์ | Funtion Scope(ํจ์) | Block Scope(์ค๊ดํธ) | Block Scope(์ค๊ดํธ) |
๋ณ์
์๋ฐ์คํฌ๋ฆฝํธ์์๋ ๋ค๋ฅธ ์ธ์ด์ ๊ฐ์ด ๋ณ์์ ๊ฐ์ ๋ด์ ์ ์๋ค.
๋ณ์๋ variable์ผ๋ก ๋ณํ ์ ์๋ ๋ฐ์ดํฐ๋ฅผ ๋ด๋ ๊ทธ๋ฆ์ ์ญํ ์ ์ํํ๋ค.
์ฐ๋ฆฌ๊ฐ ๋ณ์๋ฅผ ์ฌ์ฉํ๋ ์ด์ ๋ ๊ฐ๊ฐ ๋ค๋ฅธ ์๊ณ ๋ฆฌ์ฆ์ ํตํด์ ํน์ ๊ฐ์ ๋์ถํด ๋ด๊ณ ๊ทธ ํน์ ๊ฐ์ ์ ์ฅ, ์ฌ์ฉ, ๊ฐ๊ณตํ ์ ์๊ฒ ํ๊ธฐ ์ํด์ ์ฌ์ฉํ๋ค.
๋ง์ ์ฌ๋๋ค์ด ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฒ์ ๋ฐฐ์ธ ๋ ๋ณ์๋ var
๋ก ๋ฐฐ์ฐ๊ฒ ๋ ๊ฒ์ด๋ค.
ํ์ง๋ง ์ด ๋ณ์ ์ ์ธ ๋ฐฉ์์๋ ์กฐ๊ทธ๋งํ ์ค๋ฅ๊ฐ ์กด์ฌํ๋ค.
๋ค์๊ณผ ๊ฐ์ ์ฝ๋๋ฅผ ๋ณด์.
var a = 10;
console.log(a);
var a = 'Hello world'
console.log(a);
์ง๊ธ ๋ค๋ฅธ ์๋ฐ์คํฌ๋ฆฝํธ๋ฅผ ์ฒซ ์ธ์ด๋ก ํ๋ ๋ ์๊ฐ ์๋๋ผ ๋ค๋ฅธ ํ๋ก๊ทธ๋๋ฐ ์ธ์ด๋ฅผ ํด๋ดค๋ ๋ ์๋ ์ด ๋ถ๋ถ์ด ๋ญ๊ฐ ์ด์ํ๋ค๊ณ ๋๋ ์๋ ์๋ค.
๋ฐ๋ก ๋ณ์์ ์ค๋ณต ์ ์ธ์ด๋ค.
์ด๋ฌํ ์ค๋ณต ์ ์ธ์ด ๊ฐ๋ฅํ ์ด์ ๊ฐ ์๋ค.
๋ณ์์ ์์กด ๋ฒ์
์๋ฐ์คํฌ๋ฆฝํธ์์์ var ๋ณ์์ ์์กด ๋ฒ์๋ ์กฐ๊ธ ๋ค๋ฅด๋ค. ์ผ๋ฐ์ ์ผ๋ก ์ฐ๋ฆฌ๋ Block Scope(๋ธ๋ก ๋จ์)
๋ผ๊ณ ํด์
for(int i = 0; i < 10; i++){
System.out.println(i);
}
for(int i = 10; i > 0; i--){
System.out.println(i);
}
์ด๋ฐ ์๋ฐ for๋ฌธ์ด ์๋ค๊ณ ํ์ ๋ { ... }
์ค๊ดํธ์ ๋ฒ์ ๋ด์ ์๋ ๋ณ์๋ ์ค๊ดํธ๋ฅผ ๋ฒ์ด๋๋ค๋ฉด ์์กด ๋ฒ์๊ฐ ๋๋ ์ฌ์ฌ์ฉ์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ณ ์๋ค.
ํ์ง๋ง ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ณ์์ ์์กด ๋ฒ์๋ Function Scope
ํจ์ ๋จ์๋ผ์ ํ๋์ ํจ์ ๋ด์์ ๋ณ์๋ ๋์ผํ ์ํ๋ก ์ ์ง๊ฐ ๋๋ค.
๊ทธ๋ ๋ค๋ฉด ์ฌ๊ธฐ์ ์ค์ํ ์ฌ์ค.
์ค๊ดํธ๋ฅผ ๋ฒ์ด๋ฌ๋ค๊ณ ํด์ ์์กด ๋ฒ์๊ฐ ๋๋ฌ๋ค๊ณ ์๊ฐํ๋ค. ๊ทธ๋์ ๊ฐ์ ์ด๋ฆ์ ์๋ก์ด ํจ์๋ฅผ ์ ์ํ๋ค.
์ด๋ ๊ฒ ํ๋ค๊ณ ํด๋ ์ค๋ฅ๊ฐ ๋์ง ์๋๋ค๋ ๊ฒ์ด๋ค.
์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ ์ ์๋ ๋ฐฉ๋ฒ์ด ๋ ๊ฐ์ง๊ฐ ํ์ํ๋ค.
- let
- const
์ฒ์ฒํ ์์๋ณด์.
let ์ ์ฌ์ฉ
์ฐ๋ฆฌ๊ฐ ์์์ var์ ์ฌ์ฉํด์ ์๋๋ ์ด์ ๋ก ์ค๋ณต ์ ์ธ์ด ๊ฐ๋ฅํ ์ ์ ๋ค์๋ค. let์ ๋ฐ๋ก ์ด ์ ์ ์์ํ๊ฒ ๋ง์์ค๋ค.
์๊น๋ ๋ค๋ฅด๊ฒ var ์์ let์ผ๋ก ์ ์ธํ๋ค๋ฉด ์ด๋ค ๊ฒฐ๊ณผ๊ฐ ์ผ์ด๋ ๊น?
์ฐ๋ฆฌ๊ฐ ์ฐ๋ คํ๋ ๋ณ์์ ์ค๋ณต ์ ์ธ์ Identifier 'a' has already been declared ๋ก ๋ง์์ค๋ค.
๊ทธ๋ฌํ let์ ๋ค๋ฅธ ์ธ์ด์ ๋ณ์ ์ฒ๋ผ
์ค๋ณต ์ ์๊ฐ ์๋ ๋์ ํ์ ํ ๋น์ ํตํด์ ๊ฐ์ ๋ณ๊ฒฝํด์ค ์ ์๊ฒ ๋๋ค.
const ์ ์ฌ์ฉ
const๋ let์ฒ๋ผ ์ฌ์ฉํ ์ ์๋ค.
์ฌ๊ธฐ์ ์ธํฐํ๋ฆฟ์ ํ๋ค๋ฉด?
๋น์ฐํ ๋ถ๊ฐ๋ฅํ๋ค.
๊ทธ๋ผ let ๊ณผ const์ ์ฐจ์ด๋ ๋ญ์ผ?
์ ๊ณง๋ด
let๊ณผ const์ ์ฐจ์ด์ ์ด ๊ถ๊ธํ ์ ์๋ค.
์ด ๋ถ๋ถ์ Immutable์ด๋ผ๋ ํ ๋จ์ด๋ก ์ ๋ฆฌํ ์ ์๋ค.
๋ด๊ฐ ์์์ const a
์ฌํ ๋น์ ํ๋ ๋ณด์ต์ ์ ๋ณด์ฌ์คฌ๋๋ฐ, ๋ฐ๋ก ๊ทธ๊ฒ let๊ณผ const์ ์ฐจ์ด์ด๋ค.
const๋ ์ด๋ ๊ฒ ์ฌํ ๋น์ ํ ์๊ฐ ์๋ค.
๊ทธ๋ผ ์ var์ Deprecated ๋์ง ์์?
๋ฐ๋ก ํธํ์ฑ๋๋ฌธ์ด๋ค.
์ง๊ธ ์ธํฐ๋ท์์๋ ์๋ง์ js ์ฝ๋๊ฐ ์กด์ฌํ๋ค.
ํ์ง๋ง ๋จ์ง ์ฌ์ฉํ๋ฉด ์ค๋ฅ๋ฅผ ์ด๋ํ ์ ์๋ค๋ ์ด์ ๋๋ฌธ์ ์ธ์์ ์กด์ฌํ๋ ๋ชจ๋ js์ var์ let๋ก ๋ณ๊ฒฝํด์ผํ ์๋ ์๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ ์์ง ์กด์ฌํ๋ค.
'๐บ Front End > - HTML,css,Javascript' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[Javascript-Core] Execution Context, ์คํ ๋ฌธ๋งฅ์ ๊ดํ์ฌ ์์๋ณด์. (0) | 2020.07.27 |
---|---|
[Javascript-Core] ์๋ฐ์คํฌ๋ฆฝํธ์ null๊ณผ undefined (0) | 2019.11.29 |
[Javascript-Core] JavaScript ์ ํน์ง๊ณผ ๋ค๋ฅธ ์ธ์ด์์ ์ฐจ์ด์ (0) | 2019.11.29 |
6. HTML ํผ ํ๊ทธ (0) | 2019.11.29 |
5. HTML ํ๋ ์ (0) | 2019.11.29 |
๋๊ธ