JS const, let, var문

forestream·2024년 1월 17일
0

var

코드 내의 var 문은 코드가 실행 되기 전 먼저 선언되기 때문에 코드 내부 어느 줄에서 선언되더라도 그 변수를 사용할 수 있다. 이렇게 아래에 있는 선언이 위로 올라가는 듯한 모양을 보고 호이스팅 hoisting이라 한다. 다만 값이 할당 되는 것은 할당이 되는 줄에서 실행되므로 그 전의 값은 undefined이다.

console.log(number); // undefined

var number = 234;

number = 123;
console.log(number); // 123 -> 선언 없이 할당만 해주어도 출력되는 모습

var number = 234;
console.log(number); // 234

var문은 let이나 const와 달리 중복으로 선언할 수 있다.

var number = 123;
console.log(number);

var number = 234;
console.log(number);

코드가 길어지면 의도치 않게 변수명이 중복될 수 있기 때문에 let이나 const문을 사용하는 것이 좋다.

함수 스코프를 갖고 있어서 함수 내에서 선언되면 해당 함수 내에서만 사용할 수 있다. 하지만 반복문이나 조건문에서 선언되면 그 밖에서도 사용할 수 있다는 뜻이기도 하다.

function sayHi() {
    var greetings = 'hello';
    console.log(greetings);
}

sayHi(); // hello
console.log(greetings); // Uncaught ReferenceError: greetings is not defined

if (true) {
    var greetings = 'hello';
    console.log(greetings); // hello
}

console.log(greetings); // hello

const

선언과 할당을 동시에 해야 한다. 한 번 값을 할당하면 재할당 할 수 없다.

const PI; // Uncaught SyntaxError: Missing initializer in const declaration

PI = 3.14;

const PI = 3.14;

PI = 3.141592; // Uncaught TypeError: Assignment to constant variable.

블록 스코프를 갖는다: 중괄호 {} 안에서 쓰이면 해당 블록 밖에서는 변수를 사용할 수 없다.

function printPi() {
    const PI = 3.14;
    console.log(PI);
}

printPi(); // 3.14 

console.log(PI); // Uncaught ReferenceError: PI is not defined

let

호이스팅이 일어나지 않는다.
블록 스코프를 갖는다: 중괄호 {} 안에서 쓰이면 해당 블록 밖에서는 변수를 사용할 수 없다.
똑같은 변수를 두 번 선언할 수 없다.
변수값을 재할당 할 수 있다.

0개의 댓글