[JavaScript] λ³μ μ μΈνκΈ°(var, let, const)
π»λ³μ μ μΈνκΈ°π»
1. var
- BOM, DOM, ES6 λ²μ μμ μ¬μ©νλ€.
- function-scoped μ±κ²©μ μ§λλ€.
- μ μ΄λ¬Έμ μκΈ° μμμΌλ‘ μΈμμ λͺ»νλ€.
- μμ μ μΈμ΄ λΆκ°λ₯νλ€.
- μ€λ³΅ μ μΈμ΄ κ°λ₯νλ€.
<script>
var a = 10;
var a = 20;
console.log(a);
</script>
aλ₯Ό μ€λ³΅ μ μΈμ ν λ€ console.logλ‘ μ°μ΄λ³΄λ©΄ 20μΌλ‘ λμ¨λ€.
2. let
- ES6(ECMAScript 2015)μμ μμ±λμλ€.
- block-scoped μ±κ²©μ μ§λλ€.
- block-scoped : ν¨μμ μ μ΄λ¬Έμ μμ μ μμμΌλ‘ μΈμνλ€.
- μ€λ³΅ μ μΈμ΄ λΆκ°λ₯νλ€.
- λ³μλ₯Ό μ§μνλ ν€μλμ΄λ€.
<script>
let a = 10; //μ μλ³μ
function m1() {
let b = 20; //μ§μλ³μ(m1)
}
m1();
console.log(b); //Uncaught ReferenceError: b is not defined
</script>
ν¨μ m1μμ μ μΈλ bλ ν¨μ λ°μμ νΈμΆνλ©΄ 'Uncaught ReferenceError: b is not defined' μλ¬κ° λ°μνλ€.
<script>
let a = 10; //μ μλ³μ
if (a>0) {
let c = 30; //μ§μλ³μ(if)
var d = 40; //μ μλ³μ
}
console.log(d);
console.log(c); //Uncaught ReferenceError: c is not defined
</script>
쑰건문 λ΄μμ μ μΈλ cλ 쑰건문 λ΄μ μλ μ§μλ³μμ΄κΈ°μ 쑰건문 λ°μμ νΈμΆνλ©΄ 'Uncaught ReferenceError: c is not defined' μλ¬κ° λ°μνλ€.
<script>
let a = 10; //μ μλ³μ
let a = 50; //Cannot redeclare block-scoped variable 'a'.
</script>
letμΌλ‘ μ μΈν μ§μλ³μλ μ¬μ μΈμ΄ λΆκ°λ₯νλ€.
3. const
- ES6(ECMAScript 2015)μμ μμ±λμλ€.
- block-scoped μ±κ²©μ μ§λλ€.
- block-scoped : ν¨μμ μ μ΄λ¬Έμ μμ μ μμμΌλ‘ μΈμνλ€.
- μ€λ³΅ μ μΈμ΄ λΆκ°λ₯νλ€.
- μμ(final λ³μ)λ₯Ό μ§μνλ ν€μλμ΄λ€.
<script>
const PI = 3.14;
PI = 5.28;
console.log(PI); //Assignment to constant variable.
</script>
μμλ λ³κ²½μ΄ λΆκ°λ₯νμ¬ μμ νλ©΄ 'Assignment to constant variable.' μλ¬κ° λ°μνλ€.
const list = document.getElementById('list');
μμ ν μΌμ΄ μλ λ³μλ constλ‘ μ μΈνλ€.
const list = document.getElementById('list');
list.setAttribute('title', 'νμ λμλ§');
list.innerText='νκΈΈλ';
const listλ document.getElementById('list') μ λ©λͺ¨λ¦¬ μ£Όμλ₯Ό μ°Έμ‘°νκ³ μμΌλ―λ‘ listμ μμ±μ΄λ λ°μ΄ν°λ λ³κ²½ν μ μλ€.
let, constκ° λ±μ₯νλ©΄μ varμ μ μ¬μ©νμ§ μλλ€.