1. var
한 번 선언된 변수를 다시 선언할 수 있다.
var name = 'Mike';
console.log(name); // Mike
var name = 'Jane';
console.log(name); // Jane
name이 두번 선언되었어도 문제되지 않는다.
let 변수의 생성과정
1. 선언
2. 초기화(undefined를 할당해주는 단계) 단계
3. 할당 단계
2. let
* var와 let은 크게 다르지 않다. 대부분의 경우 둘을 바꿔 사용해도 문제되지 않는다.
let 변수는 선언하기 전에 사용할 수 있다.
console.log(name); // undefiend
var name = 'Mike';
.var name이 나오기 전에 name을 사용했지만 에러를 일으키지 않는다.
왜냐하면 아래의 코드와 같이 동작하기 때문이다.
var name;
console.log(name); // undefined
var name = 'Mike';
코드가 실제로 이동하지는 않지만
var로 선언한 변수는 최상위로 끌어올려진 것처럼 동작한다. 이를 호이스팅(hoisting)이라고 한다.
호이스팅(hoisting) : 스코프 내부 어디서든 변수 선언은 최상위에 선언된 것 처럼 행동
하지만 console은 undefined를 출력한다.
선언은 호이스팅되지만, 할당은 호이스팅되지 않기 때문이다.
즉, name이란 변수만 올려진 것이고, Mike란 값은 그자리에 있는 것이다.
var 변수의 생성과정
1. 선언 및 초기화(undefined를 할당해주는 단계) 단계
2. 할당 단계
3. const
const 변수의 생성과정
1. 선언+ 초기화 + 할당
let name;
name = 'Mike';
var age;
age = 30;
const gender;
gernder = 'male'; //Error발생
선언과 할당을 동시에 하지 않았기 때문에 const부분에서 Error가 발생한다.
var : 함수 스코프 - 함수 내에서 선언된 변수만 그 지역변수가 된다.
let, const : 블록 스코프 - 모든 코든 블록(함수, if문, for문, while문, try/catch문 등) 내에서 선언된 변수(지역변수)는
코드 블록 내에서만 유효하며, 외부에서 접근할 수 없다.
const age = 30;
if(age > 19) {
var txt = '성인';
}
console.log(txt); // '성인'
if문 안에서 선언된 var변수는 if문 밖에서도 사용할 수 있다.
하지만 let, const는 중괄호{} 내에서만 사용할 수 있다.
*var변수도 함수 내에서 선언되면 함수 내에서만 사용이 가능하고 함수 밖에서는 사용할 수 없다.
function add(num1, num2) {
var result = num1 + num2;
}
add(2, 3);
console.log(result); // Error
참고 및 출처 : 유투브 코딩앙마 https://youtu.be/4_WLS9Lj6n4
'JavaScript' 카테고리의 다른 글
| [JavaScript] 문자열 메소드(String methods) (0) | 2022.09.15 |
|---|---|
| [JavaScript] Number와 Math (0) | 2022.09.15 |
| [JavaScript] 심볼(Symbol) (0) | 2022.09.15 |
| [JavaScript] 객체 메소드 - Object.assign(), Object.keys(), Object.values(), Object.entries(), Object.fromEntries() / 계산된 프로퍼티 (Computed Property) (0) | 2022.09.15 |
| [JavaScript] 생성자 함수 (0) | 2022.09.15 |
댓글