반응형
javascript 사용하면서 var, let , const 의 차이를 정리하고 구분해서 사용하려고 합니다
|
var |
let |
const |
1. 범위 |
global , function |
block |
block |
2. 값변경 |
가능 |
가능 |
불가능 |
3. 재선언 |
가능 |
불가능 |
불가능 |
4. 초기값 |
undefined |
undefined |
불가능 |
변하지 않는 값은 const 로 선언하고
부득이한 경우가 아니면 var 대신에 let 을 사용하자
1. 범위비교
function scope() {
for (i=0; i < 1; i++) {
var j = 10;
let k = 20;
const l = 30;
}
console.log(`var j = ${j}`); // var j = 10
console.log(`let k = ${k}`); // k is not definded
console.log(`const l = ${l}`); // l is not defined
}
scope();
실행하면 var j 만 결과가 나오고
let k 와 const l 은 not defined 에러가 발생된다
function scope() {
for (i=0; i < 1; i++) {
var j = 10;
let k = 20;
const l = 30;
console.log(`let k = ${k}`); // let k = 20
console.log(`const l = ${l}`); // const l = 30
}
console.log(`var j = ${j}`); // var j = 10
}
scope();
let 과 const 의 scope 을 변경해서 출력하면 정상적으로 결과값이 나온다
function scope() {
for (i=0; i < 1; i++) {
var j = 10;
}
}
scope();
console.log(`var j = ${j}`); // j is not defined
var 도 function scope 밖에서 호출하면 에러가 난다
function scope() {
for (i=0; i < 1; i++) {
j = 10;
}
}
scope();
console.log(`var j = ${j}`); // var j = 10
function 내부에서 var 선언을 빼면 정상 출력된다 (j 가 hoisting 되면서 global 함수로 선언되어서 정상적으로 작동한다)
function scope_var() {
var a = 10;
if (a > 5) {
var a = 20;
console.log(`var a = ${a}`); // var a = 20
}
console.log(`var a = ${a}`); // var a = 20
}
function scope_let() {
let b = 10;
if (b > 5) {
let b = 20;
console.log(`let b = ${b}`); // let b = 20
}
console.log(`let b = ${b}`); // let b = 10
}
function scope_const() {
const c = 10;
if (c > 5) {
const c = 20;
console.log(`const c = ${c}`); // const c = 20
}
console.log(`const c = ${c}`); // const c = 10
}
scope_var();
scope_let();
scope_const();
var 은 값이 변경되고 let 과 const 는 block 기준으로 값이 변경되지 않고 각자 변수값이 출력된다
2. 값변경
function value_change() {
var a = 10;
a = 20;
console.log(`var a = ${a}`); // var a = 20
let b = 20;
b = 30;
console.log(`let b = ${b}`); // let b = 30
const c = 30;
c = 40;
console.log(`const c = ${c}`); // TypeError: Assignment to constant variable
}
value_change();
const 는 값을 변경할 수 없습니다
var 과 let 는 얼마든지 변경 가능합니다
3. 재선언
var 만 변수 재선언이 가능합니다
function redeclare() {
var a = 10;
var a = 20;
console.log(`var a = ${a}`); // var a = 20
let b = 20;
let b = 30;
console.log(`let b = ${b}`); // SyntaxError: Identifier 'b' has already been declared
const c = 30;
const c = 40;
console.log(`const c = ${c}`); // SyntaxError: Identifier 'c' has already been declared
}
redeclare();
let 과 const 는 syntaxError 납니다
4. 초기값
var 과 let 은 초기값이 없이 선언 가능하지만
const 는 반드시 초기값이 있어야 합니다
function initialized() {
var a;
console.log(`var a = ${a}`); // var a = undefined
let b;
console.log(`let b = ${b}`); // let b = undefined
const c;
console.log(`const c = ${c}`); // SyntaxError: Missing initializer in const declaration
}
initialized();
결론
const 로 변하지 않는 값들을 선언해주고
변하는 값들은 전부 let 을 사용합니다
var 은 되도록 사용하지 마세요
반응형
'IT > Frontend' 카테고리의 다른 글
Our Next Web Framework is Vue (0) | 2020.02.13 |
---|---|
AWS Lambda 를 이용한 Nuxt.js 프로젝트 구현 (0) | 2019.12.03 |
갤럭시 S 시리즈 출시일 (0) | 2019.10.29 |
Frontend 웹개발 연습환경 (0) | 2019.08.16 |
Javascript 환경변수 처리하기 process.env (dotenv) (1) | 2019.08.05 |
이미지 라이브러리 sharp (0) | 2019.08.04 |
java vs javascript 차이 (0) | 2019.08.04 |
Javascript 날짜에 타임존 적용 (1) | 2019.08.02 |