변수는 var와 let 두 가지로 나뉜다.
그리고 상수인 const하지만 var 키워드는 사용하지 않는다!
이유는 논리적인 흐름에서 계속 벗어나기 때문에
코드로 설명
let a = "let 변수 a"
if(true) {
let b = "let 변수 b"
console.log(b)
};
console.log(a)
console.log(b)
원래 b라는 변수는 if문 안에서만 사용이 가능한 변수인데,
let이 아닌 var 키워드를 사용하게 된다면 오류 없이 실행이 된다.
var a = "var 변수 a"
if (true) {
var b = "var 변수 b"
console.log(b)
}
위에 코드처럼 사용하면 원래는 출력이 되면 안 되는데 var를 사용하게 되면, 출력이 되는 현상이 발생된다.
let과 const는 블록스코프
선언된 블록 내에서만 사용 가능함!
let은 var와 같이 변할 수 있는 수이지만, 호이스팅 문제가 발생되지 않는다.
반면에 const는 변할 수 없는 값을 뜻함!
아래는 var를 선언 했을 때의 예시
function test() {
var test = "오오";
if (true) {
var test = "바뀔까?"
}
console.log(test);
}
test()
>> 결과는... 바뀌어서 출력 됨
console.log(a)
var a = "var 변수 a"
console.log(a)
var를 사용하게 된다면 위에처럼 변수를 선언하기도 전에도 호이스팅 문제가 발생한다.
그래서 어떤 걸 사용하면 좋을까
정답은 아니지만, 가능하다면 변수는 let과 const만 사용하는 것이 제일 좋다. 그 이유는 위에서도 말 했듯,
변경이 되지 않기에 오류 발생의 원인이 되지 않고 더불어서 안정성과 버그를 예방할 수 있기 때문이다.
가능하다면 const를 먼저 선언하고, 변경 될 값에만 let을 쓰는 것이 제일 바람직하다!
그것이 가독성도, 보수유지도, 오류도 날 일이 없음!!!
let과 const 사용 방법과 차이점
let 사용 했을 시
let test1 = "hi";
console.log(test1);
let은 변할 수 있는 값이니까, 만약 변경하려고 한다면?
test1 = "반갑습니다.";
console.log(test1);
을 하게 된다면 반갑습니다. < 로 변경되어 출력!
const 사용 했을 시
const test2 = "hi"
console.log(test1)
변경하려고 한다면?
test2 = "안녕하세요" << 여기서 에러 발생!!!