반응형
let
function FuncA() {
for(var i = 0; i < 5; i++)
{
console.log(i);
}
console.log(i);
}
위의 코드를 실행했을 때 C#이나 C++과 같은 다른 프로그래밍 언어에서는 7번 줄에서
소멸된 변수인 i 를 사용하기 때문에 오류가 난다. 하지만 JavaScript 에서는 변수의 범위를
함수의 블록 범위로 보기때문에 오류가 나지 않고 5라는 값이 출력이 된다.
이와 같은 문제를 해결하기 위해서 도입된 변수 선언 방법이 let이다.
let 은 C# 또는 C++ 같은 언어에 와 같은 범위의 변수를 선언하게 된다.
그래서 아래의 소스코드에서는 오류가 출력된다.
function FuncA() {
for(let i = 0; i < 5; i++)
{
console.log(i);
}
console.log(i);
}
const
function FuncA() {
var name = "Hong Gil Dong";
name = "MAJG";
console.log(name);
}
위의 코드는 문법상으로 아무 문제가 없다.
하지만 만약 name이라는 값이 변해서는 안 되는 값을 가지고 있다면 위의 코드는 문제가 된다.
불변 값을 가지는 변수를 만들기 위해서 const 키워드가 사용된다.
function FuncA() {
const name = "Hong Gil Dong";
name = "MAJG";
console.log(name);
}
이렇게 const로 name 을 선언하였는데 3번줄에서 name 변수를 재할당하려고 하면 오류가 발생한다.
배열, 숫자, 문자열 등 모든 타입들이 const 로 선언될 수 있고, const 키워드로 선언된 변수는 재할당이 불가능하다.
하지만 const를 사용하여 변수를 선언하더라도 배열과 오브젝트의 값을 수정하는 것은 가능하다. ( 재할당은 불가능 )
아래의 코드는 const로 선언되었지만 수정이 되며 오류 또한 나지 않는다.
function FuncA() {
var fruits = ["apple", "orange", "lemon"];
fruits.push("grape");
console.log(fruits);
}
ES6 에서는 변수를 사용할 때 const를 사용하고, 만약 변경이 되는 값이라면 let을 사용하며 var 은 사용하지 않는다.
반응형
'프로그래밍 > JavaScript' 카테고리의 다른 글
[ES6] JavaScript 문자열 ( string ) (0) | 2020.10.20 |
---|---|
JavaScript 클로저 ( Closer ) (0) | 2020.10.07 |
JavaScript 모듈 ( Module ) (0) | 2020.10.06 |
JavaScript 객체 ( Object ) (0) | 2020.10.06 |
행정구역지도 만들기 (0) | 2020.07.31 |