반응형
let, const
- 변수의 기본은 생성하고 초기화하여 사용한다.
- 변수의 초기화 하거나 생성할때 let, const, var를 이용한다. 기존에는 var로 변수를 선언했으나 지금은 var 보다는 const, let으로 선언을 한다.
- 변수는 가변적이기 때문에 변할 수 있다.
- javascript 는 위에서 아래로 순차적으로 실행한다.
let a = 111;
let b = a -5 ;
console.log(b);
# 결과값: 106
a = 6;
console.log(b, a);
# 결과값: 106, 6
var를 쓰지 않는 이유
- let,const는 Block scope 이지만 var는 그렇지가 않다.
Block scope 이란 코드를 블럭 안에 작성을 하면 블럭 밖에서는 블럭안을 볼 수가 없게 됨에 따라 코드의 안정성을 확보할 수 있다. 하지만 var는 Block scope 가 아니기 때문에 밖에서도 블럭안으 변수에 접근 할 수 있고, 이는 곧 코드의 안정성을 확보 할 수 없다는 뜻이 된다.
- let, constant일 경우
{
let name = 'kang';
console.log(name);
# 결과값: kang
}
console.log(name);
# 결과값: name is not defined
- var일 경우
{
var name = 'kang';
}
console.log(name);
# 결과값: kang
- var는 hoisting 이 된다.
hoisting 이란 script가 실행될때 var 또는 function은 실행시 제일 위로 이동하게 된다는 의미임
// 실제 코드
console.log(age);
# 결과값: undefined
age =4;
var age;
console.log(age);
# 결과값: 4
/*
여기서 age 라는 변수를 선언하지도 않았는데 값을 할당 할 수 있음
더욱이 실행되었던 console.log(age); 값을 보면 "undefined" 즉, 변수가 선언되었으나 값이 할당되지 않은 상태로 결과값이 나타남에 따라 코드에서는 age 라는 변수 이미 선언되었다고 인식을 하고 있음
*/
//javascript 가 인식하는 코드
var age;
console.log(age);
age =4;
console.log(age);
//이처럼 var로 선언된 변수는 실행시 최상위로 실행 순서가 이동하며 이를 hoisting 이라고 함
예제
{
var a = 30;
if (true) {
var a = 50;
console.log(a); // 결과값: 50
}
console.log(a); // 결과값: 50
}
{
let a = 30;
if (true) {
let a = 50;
console.log(a); //결과값: 50
}
console.log(a); //결과값: 30
}
let 과 const 차이
- let 은 할당된 변수의 값을 변경할 수 있으나 const 는 재할당을 할 수 없다.
let a = 3;
a = 4;
console.log(a); // 결과값:4
const b = 1;
b = 2;
console.log(b); //결과값: Uncaught TypeError: Assignment to constant variable.
'ES6' 카테고리의 다른 글
6. Template Literals (0) | 2020.07.08 |
---|---|
5. classes 클래스 (0) | 2020.07.07 |
4. Arrow Function (0) | 2020.07.06 |
2. Bable 을 이용한 ES6 변환 (0) | 2020.07.03 |
1. ES6 기본정의 (0) | 2020.07.03 |