var를 공부하다 생긴 궁금증
호이스팅을 공부하다 함수표현식과 함수선언문을 공부하게 됐고, 자연스럽게 두 문법의 차이점을 공부하던중 궁금증이 생겼다.
함수 선언문과 var는 함수스코프를 가진다. 함수스코프는 함수블럭 안에서의 접근이 가능한 스코프를 말하는 것인데, var는 함수 스코프 이외에 for문이나 if문 { } 블록스코프 안에 var로 선언한 변수는 바깥에서도 사용이 가능하다.
// 블록스코프에 var가 접근
{
var a = 1
}
console.log(a) // 1
for(var i =0; i < 10; i++){
}
console.log(i) // 9
그렇다면 var는 블록스코프 안에서도 접근이 가능하다는 것인데.
그렇다면 함수 표현식은 블록스코프이기 때문에 함수 표현식 안에 선언한 var 변수도 접근이 가능할거라고 생각을 했다.
let add = function(){
var a = 1;
}
console.log(a) // a is not defined
하지만 결과는 접근이 불가능 했다.
이해가 되지 않았다 var는 블록스코프에 접근이 가능한게 아니었나?...
그렇다면은 함수 표현식은 호이스팅의 영향을 받지 않는다 즉 , var가 블록스코프에 접근할 수 있는것은 호이스팅 때문이라고 생각하면 되는거 같은데 이게 맞는걸까?
Author And Source
이 문제에 관하여(var를 공부하다 생긴 궁금증), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@jmean12/var를-공부하다-생긴-궁금증저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)