Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 뉴스수집
- CSS애니메이션
- 코딩가이드
- 코딩규칙
- 파이썬
- javascript
- 투두리스트
- vueJS
- 스타일가이드
- CSS로딩
- MariaDB
- 구글CSS
- html제거
- css rule
- google style guide
- 자기개발
- to do list
- python
- css규칙
- 자바스크립트
- 개발회고
- @keyframes
- 로딩UI
- Vue.js
- vuejs입문
- 구글스타일가이드
- 프레임워크
- vue-cli
- 웹스크래핑
- 코딩컨밴션
Archives
- Today
- Total
코드공부방
JavaScript의 변수를 var로 선언하지 말아야 하는 이유 본문
반응형
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);
변수에 값을 할당하려면 변수 선언부터 하고 오라고 야무지게 오류를 내뱉어준다.
2. block scope 무시
{
var serviceName = 'codeStudy';
}
console.log(serviceName)
위 코드를 보면 block내에서 선언된 변수를 block밖에서 출력함에도 출력이 정상적으로 된다.
그럼 var를 let으로 변경하여 변수 선언을 하면 어떻게 될까?
{
let serviceName = 'codeStudy';
}
console.log(serviceName)
let 변수선언을 하면 block내의 코드를 외부에서 인식하지 않기 때문에 serviceName변수를 찾을 수 없다는 오류를 뱉는다.
문제를 인식했으니 행동하자.
내용 출처 : 엘리의 드림코딩
반응형
'웹프로그래머 > Javascript' 카테고리의 다른 글
JavaScript 배열(Array)에 대해 자세히 알아보기 (0) | 2022.01.12 |
---|---|
JavaScript object(객체)에 대해 자세히 알아보기 (0) | 2022.01.11 |
JavaScript class에 대해 자세히 알아보기 (0) | 2022.01.10 |
JavaScript 함수(Function), 화살 함수(Arrow Function) 자세히 알아보기 (0) | 2022.01.09 |
JavaScript 변수 선언 시 let과 const의 사용 예와 차이점 (0) | 2022.01.08 |
Comments