Coding Planet
[JS] var 사용을 지양해야하는 이유(호이스팅, 변수의 범위) 본문
반응형
* var의 사용이 지양되어야 하는 이유
- var의 사용이 지양되는지를 이해하기 위해서는 먼저 호이스팅과 변수의 적용 범위에 대한 이해가 필요하다.
이유1. 변수명의 중복사용이 허용되기 때문
- var는 변수명의 중복 사용을 허용한다. 따라서 변수값이 안전하게 보관되기 어렵다.
- 예를 들어 어떤 프로젝트에서 var를 이용해 변수를 사용하고 이용했는데 이를 알지 못하고 다시 동일한 변수선언을 해서 사용한다면 이전 값은 저장되지 않고 바뀌게 된다.
- 이는 함수 밖에서 선언된 변수는 전역변수가 되는 함수 레벨 범위인 var의 특성 때문이다.
- 이로 인해 전역변수가 남발되는 부작용이 있다.
이유2. 호이스팅으로 인한 undefined 문제, 코드의 명확성 저하
- 호이스팅을 통해 함수 범위 내에서 var의 선언이 함수 최상단으로 끌어올려진다. 이로 인해 var 변수의 선언과 초기화 이전에 변수를 사용해도 에러가 발생하지 않고 undefined가 출력된다.
- 즉, 인터프리터는 다음과 같이 코드를 해석한다.
- var sharon이라는 선언부만 함수 최상단으로 끌어올리기 때문에 초기화 혹은 정의되지 않았다는 의미의
undifined가 출력되는 것이다. - 이러한 복잡성은 코드의 정확성과 가시성을 저해하기 때문에 지양해야 한다.
이유3. 안그래도 복잡한 for문....whyrano...
- 앞 서 살펴본 바와 같이 var는 함수레벨의 범위를 가지기 때문에 for의 블록{}을 벗어나도 그 값이 유지가 된다.
- 따라서 for문에서 선언한 var i는 블록 밖에서도 유효한 것이다.
✨따라서, var 사용을 지양하고 let, const를 적절하게 사용해야 한다.
세가지 변수에 대한 자세한 설명은 [관련 포스트]에서 확인할 수 있다.
반응형
'front' 카테고리의 다른 글
[JS] 버튼을 누를 때마다 true/false 전환하게 하기 (0) | 2023.03.14 |
---|---|
[JS] ES6 , 템플릿 리터럴Template Literal, 백틱(`), ${ }을 이용한 문자열 표기법 (0) | 2023.03.13 |
[JS] 변수와 자료형 (0) | 2023.03.07 |
[JS]DOM(Document Object Model), Node와 Element의 차이 (0) | 2023.03.06 |
[JS] JASON(Java Script Object Notation, 자바스크립트 객체 표기법) (0) | 2023.03.06 |
Comments