본문 바로가기

ES6

block scope

반응형
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 구문 같은 것들은 문제가 생기게 된다.
반응형

'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