var은 함수 스코프를 가진 변수 키워드임
function some() {
var x = 10; // x는 some함수 내에서만 참조 가능
}
function some() {
if (1) {
var x = 10
}
}
이건
호이스팅으로 인해
function some() {
var x
if (1) {
x = 10
}
}
과 같음 그래서 some내에서는 어디서든 참조 가능
function some() {
var x = 10
}
function any() {
console.log(x) // any 함수 스코프 내에 x가 있는지 보고 없으면 전역에서 x를 찾고 없으면 undefined
}
즉 함수 범위에서만 참조 가능
일반적으로 다른 언어는 지역 범위
블록 스코프 블록 안에서만 접근 가능하고
var은 함수 최상단으로 선언이 호이스팅(끌어올림)되기 때문에
함수 블록내 어디서든 접근 됨
function some() {
var x = 10; // x는 some함수 내에서만 참조 가능
}
function some() {
if (1) {
var x = 10
}
}
이건
호이스팅으로 인해
function some() {
var x
if (1) {
x = 10
}
}
과 같음 그래서 some내에서는 어디서든 참조 가능
function some() {
var x = 10
}
function any() {
console.log(x) // any 함수 스코프 내에 x가 있는지 보고 없으면 전역에서 x를 찾고 없으면 undefined
}
즉 함수 범위에서만 참조 가능
일반적으로 다른 언어는 지역 범위
블록 스코프 블록 안에서만 접근 가능하고
var은 함수 최상단으로 선언이 호이스팅(끌어올림)되기 때문에
함수 블록내 어디서든 접근 됨
es6 부턴 var 자체를 안써서..
필요시 사용하긴 함 그리고 어디서나 접근은 가능하지만 값할당은 해당 var 위치에서 값할당됨
이 때문에 hoisting 안되는 let과 const를 사용하는거