● 식별자에 값을 넣을 때 사용하는 키워드
ES5까지는 var키워드밖에 없었습니다. ES6부터 let과 const 키워드의 개념이 추가되었습니다.
모두 기본적인 사용방법은 같지만, 위의 표와같이 변수와 상수 그리고 스코프,재선언을 구분하며 사용합니다.
ES6에서 상수가 생긴 이유는 성능 향상때문입니다. 상수는 변할 가능성이 없기에 처리해야 할것이 줄어들었습니다.
( 변수는 저번편에서 자세히 말씀드렸기에 간단하게 말씀드리겠습니다. )
* 변수 : 변할 수 있는 값 (변경가능)
* 상수 : 변하지 않는 고정값 (즉, 변경 불가)
● var와 let의 차이
예시 1)
//전역 스코프
{
// 스코프 A
{
//스코프 B
}
}
예시 1을 보면 일반적으로 특정 스코프 안에서 선언한 변수는 해당 스코프 안에서만 사용할수있습니다.
하지만, var키워드는 '전역 스코프 위치'에 변수를 선언하는 키워드이기에 오류가 잘 발생하지 않습니다.
그러나, 스코프를 벗어날 때는 제거해야 메모리등의 시스템 자원을 적절하게 이용할수있습니다.
var키워드는 전역 소코프이기에 자원을 낭비할수있는 단점이 있습니다. 반면에, let키워드는 자원을 적절하게 사용할 수 있게
특정 스코프 내부에서만 변수를 사용할 수 있도록 합니다.
예시 2)
var n=1;
function test(){
var n;
console.log(n);
n=2;
console.log(n);
}
위 예시2를 보시면, 다른 언어들처럼 block레벨이 아닌 function레벨로 Hoisting이 발생하는걸 보실수있습니다.
첫번째 console.log(n);는 undefined가 표시됩니다.
즉, 바로위 var n에서 호이스팅이 발생합니다.
* 호이스팅(Hoisting) : var키워드를 사용하여 변수 선언시, 해당 변수가 속한 범위(scope) 최상단으로 올려 버리는 현상이다.
'Dev. Front-End > JavaScirpt' 카테고리의 다른 글
[Javascript] Number객체와 String객체 / 메소드(Method) (0) | 2019.09.22 |
---|---|
[Javascript] for of 반복문 / for in 반복문 개념 및 차이점 (예제) (0) | 2019.09.21 |
[Javascript] 숫자와 문자열 자료형 변환(Number) (0) | 2019.09.20 |
[Javascript] prompt(), confirm() 함수 (1) | 2019.09.19 |
[Javascript] 배열 (Array) / length, push (0) | 2019.09.18 |
[Javascript] 클로저 (Closure) (0) | 2019.09.17 |
[Javascript] 변수 (복합대입연산자, 증감연산자, typeof, undefined) (0) | 2019.09.15 |
[Javascript] 기본문법 ( 표현식, 주석, 출력-alert, 각종 자료형, 이스케이프문자 ) (0) | 2019.09.14 |