코드공부방

JavaScript의 변수를 var로 선언하지 말아야 하는 이유 본문

웹프로그래머/Javascript

JavaScript의 변수를 var로 선언하지 말아야 하는 이유

:- ) 2022. 1. 7. 13:00
반응형

JavaScript문법은 매우 유연한 언어이기 때문에 다른 언어에서는 이해할 수 없는 문법들이 허용되기도 한다.

1. var hoistring

아래 코드를 보면,

'use strict';
console.log(serviceName);
serviceName = 'CodeStudy';
console.log(serviceName);
var serviceName;

변수 선언전 할당이 가능하다.

'use strict' 모드임에도 serviceName이라는 변수를 선언도 하기 전에 값을 할당했는데 serviceName변수의 출력이 정상적으로 되었고, 그 후에 같은 이름의 변수를 선언 했음에도 아무런 문제 없이 코드가 잘 작동되고 있다.
그 이유는 var hoisting 때문이다. JavaScript는 어느 곳에 변수 선언을 하던, 변수 선언문은 최상단으로 끌어 올려준다.


그럼 var 대신 let을 사용하면 어떻게 될까?

'use strict';
serviceName = 'CodeStudy';
console.log(serviceName);
let serviceName;
console.log(serviceName);

let 키워드로 변수선언을 하면 변수 선언 전 값 할당은 불가능하다.

변수에 값을 할당하려면 변수 선언부터 하고 오라고 야무지게 오류를 내뱉어준다.

 

2. block scope 무시

{
	var serviceName = 'codeStudy';
}
console.log(serviceName)

block밖에서 block내 선언된 변수 사용이 가능하다.

위 코드를 보면 block내에서 선언된 변수를 block밖에서 출력함에도 출력이 정상적으로 된다.
그럼 varlet으로 변경하여 변수 선언을 하면 어떻게 될까?
{
	let serviceName = 'codeStudy';
}
console.log(serviceName)
let 키워드를 사용하여 변수를 선언하면 block내 선언된 변수는 block밖에서 사용을 불허한다.

 let 변수선언을 하면 block내의 코드를 외부에서 인식하지 않기 때문에 serviceName변수를 찾을 수 없다는 오류를 뱉는다. 


문제를 인식했으니 행동하자.

var를 쓰지 말아야하는 이유


내용 출처 : 엘리의 드림코딩

반응형
Comments