반응형
let과 const의 또 다른 장점은 block scope가 있다는 점이다.
스코프는 기본적으로 버블이다.
이 버블이 variable들이 접근가능한지 아닌지를 감지한다.
if (true) {
const hello = "hi";
}
console.log(hello);
이런 코드가 있을때, const이든 let이든 에러가 안뜰리 없다.
block은 {} 이걸로 만들어져있다. {} 밖에서 hello는 존재하지 않는 것이다.
그런데
if (true) {
var hello = "hi";
}
console.log(hello);
코드를 실행해보면 hi가 콘솔창에 출력된다.
if, while, for 구문안에서 var로 변수를 만들 수 있다.
var는 block scope를 사용하지않고, function scope를 가지기 때문이다.
펑션 스코프의 뜻은 var가 펑션 안에서 접근할 수 있다는 뜻이다.
function a(){
var hello = "hi";
}
console.log(hello)
hello는 지역변수이니 당연히 에러가 뜬다. 펑션 밖이나 다른 펑션에서 변수를 접근하게 하는건 막을 수 있지만
if, else, try catch, for 구문 같은 것들은 문제가 생기게 된다.
스코프는 기본적으로 버블이다.
이 버블이 variable들이 접근가능한지 아닌지를 감지한다.
if (true) {
const hello = "hi";
}
console.log(hello);
이런 코드가 있을때, const이든 let이든 에러가 안뜰리 없다.
block은 {} 이걸로 만들어져있다. {} 밖에서 hello는 존재하지 않는 것이다.
그런데
if (true) {
var hello = "hi";
}
console.log(hello);
코드를 실행해보면 hi가 콘솔창에 출력된다.
if, while, for 구문안에서 var로 변수를 만들 수 있다.
var는 block scope를 사용하지않고, function scope를 가지기 때문이다.
펑션 스코프의 뜻은 var가 펑션 안에서 접근할 수 있다는 뜻이다.
function a(){
var hello = "hi";
}
console.log(hello)
hello는 지역변수이니 당연히 에러가 뜬다. 펑션 밖이나 다른 펑션에서 변수를 접근하게 하는건 막을 수 있지만
if, else, try catch, for 구문 같은 것들은 문제가 생기게 된다.
반응형
'ES6' 카테고리의 다른 글
find() - includes() (0) | 2020.09.14 |
---|---|
arrow function을 사용하지 않아야할 때. 'this' (0) | 2020.09.09 |
arrow function (0) | 2020.09.09 |
dead zone (0) | 2020.09.09 |
let, const (0) | 2020.09.09 |