* 자바스크립트의 변수는 var, let, const가 있다.
일반변수 -> var, let
상수 -> const
* 전역변수 : 전역객체(window)에서 속성으로 등록된 변수
전역객체 : 자바스크립트 안에서 선언하는 변수, 함수, 객체를 속성으로 관리하는 객체
1) var : 재선언 O/ 재할당 O/ 함수레벨 스코프/ 변수 호이스팅 O
2) let : 재선언 X/ 재할당 O/ 블록레벨 스코프 / 변수 호이스팅 X
3) const : 재선언 X/ 재할당 X/ 블록레벨 스코프/ 변수 호이스팅 X
- 재선언이란, 예를들어 자바에서는
Stirng test = "A";
String test = "B";
이렇게 사용하면 에러가 뜨지만 자바스크립트에서는 가능하다.
- 변수 호이스팅
: 자바스크립트에서 var 변수의 경우 Interpreter가 코드를 해석할 때 변수의 선언부를 먼저 다 읽고.
그 후 코드를 위에서 아래로 읽는다. (양날의 검으로 작용할 수 있기에 안쓰는게 낫다.)
- Scope(스코프)
: 메모리에 올라간 변수가 GC(Garbage Collector)에 의해 지워지는 시점을 말함
-> 함수범위 Scope : 변수가 선언된 함수가 종료되면 메모리에서 변수가 삭제
-> 블록레벨 Scope : 변수가 선언된 블록{} 이 끝나면 메모리에서 변수가 삭제
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
function variableTest(){
/* var 변수와 let 변수 모두 if문의 실행부에서 선언되었다. */
if(true){
var vScope = 'var는 함수범위 scope를 가진다.';
let lScope = 'let는 블록범위 scope를 가진다.';
}
console.dir(vScope); /* 함수가 끝날 떄까지 살아 있음 */
/* console.dir(lScope); if문 블록이 닫히는 순간 lScope는 죽어버리기 때문에 Error뜸 */
}
/* 함수 호출 */
variableTest();
|
'FrontEnd > Javascript' 카테고리의 다른 글
[JS] Javascript의 함수(Function) (0) | 2021.01.21 |
---|---|
[JS] Javascript의 배열(array) (0) | 2021.01.19 |
[JS] Javascript의 statement (0) | 2021.01.19 |
[JS] Javascript 의 연산자(operator) (0) | 2021.01.19 |
[JS] Javascript 타입(type) (0) | 2021.01.19 |
댓글