[JavaScript] 변수선언 var, let, const 비교하기

bi_sz·2023년 9월 13일
0

JavaScript

목록 보기
20/22
post-thumbnail

Var 의 단점

funtion 단위의 스콥을 가집니다.


예제 코드

var hello = 'world';

funtion test() {
	var hello = 'korea';
    console.log(hello);
}

test();

console.log(hello)

실행결과

korea
world


아래는 함수를 if 문으로 변경한 예제 코드입니다.

var hello = 'world';

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

//test();

console.log(hello)

실행결과

korea
korea

Var 로 선언한 변수의 스콥은 블록문이 아닌 function 이기 때문입니다.

첫번째 선언된 var hello = 'world'; 는 글로벌 변수이고,
두 번째에 선언된 var hello = 'Korea'; 는 로컬이기 때문에
위와 같은 결과는 바람직하지 않습니다.


var hello = 'world';
var hello = 'korea';

console.log(hello)

hello 라는 변수를 똑같이 하나 더 만들었습니다.

실행결과

korea

오류를 발생시키지 않고 korea 가 출력됩니다.

같은 변수를 두 번 선언하여도 오류가 발생하지 않습니다.

이런 경우에는 오류를 발생시키는 것이 더 좋습니다.

코드가 길고 복잡해질수록 어떤 변수명을 상용하고 있는지 파악이 어려워,
이런 상황에서 오류가 발생하지 않으면 원치않는 값이 덧칠해지게 되어 바람직하지 않습니다.


위의 예제 코드를 let 으로 변경한 코드입니다.

let hello = 'world';
let hello = 'korea';

console.log(hello)

실행결과

오류 발생

바람직한 결과입니다.


위에서 바람직하지 않은 결과가 나왔던 if문을 let에서 실행해보겠습니다.

let hello = 'world';

if(true) {
	let hello = 'korea';
    console.log(hello);
}

console.log(hello)

실행결과

korea
world

바랍직한 결과입니다.
let은 변수를 선언한 블럭에서 유효합니다.
그래서 var 보다는 let의 사용이 권장됩니다.


const는 constant로 상수, 즉 변하지 않는 값을 뜻합니다.

const 변수를 선언하고, 값을 바꿔보겠습니다.

const num = 5;

num = 6;

console.log(num)

실행결과

오류 발생

한 번 정의가 되었기 때문에 재정의를 히게되면 오류가 발생합니다.

스콥은 let과 동일합니다.

const 변수를 선언한 블록에서 유효합니다.


if문 예제를 const로 바꿔보겠습니다.

const hello = 'world';

if(true) {
	const hello = 'korea';
    console.log(hello);
}

console.log(hello)

실행결과

korea
world

const hello = 'world'; 변수는 글로벌이고,
const hello = 'korea'; 변수는 로컬이기 때문에 바람직한 결과입니다.


const 유의해야할 점

객체나 배열의 요소수정은 가능합니다.

//object
const drinks = {};
drink.caffe = 'latte';
drink.lemon = 'ade';

console.log(drinks)

const 객체 drinks 를 만들고, 키 밸류값을 만들어줍니다.

실행결과

{ caffe: 'latte', lemon: 'ade' }

오류가 발생하지 않고 const로 선언된 객체에 밸류 값들이 추가됩니다.

// array
const arr = [ 1, 2, 3, 4, 5 ];
arr[0] = 100;
arr[4] = 500;

console.log(arr);

const로 배열 arr 을 만들고, 요소수정을 했습니다.

실행결과

[ 100, 2, 3, 4, 500 ]

const로 선언된 배열이지만 값 수정이 되었고, 반영이 되었습니다.


예전에도 var, let, const 에 대해 다뤘던 적이 있는데 벌써 1년이 지났네요.. ㅎㅎ JS를 안 다루다 보니 다 까먹어서 다시 공부해야겠네요. 아래 링크도 참고해보세요 !

https://velog.io/@bi-sz/Var

0개의 댓글