var name = 'zero';
function log(){
console.log(name);
}
function wrapper(){
var name = 'nero';
log(); // ==! console.log(name);
}wrapper();
log()의 실행값은 'zero' 이다.
'스코프체인을 따라 변수나 함수는 한단계씩 올라가며 찾는다.'
자칫 wrapper함수 안에 있는 log();를 console.log(name)으로 착각하게 되면, name = 'nero'로 읽는 오류를 범할 수 있다.
코드는 코드자체로 보아야한다. javascript는 스코프체인을 활용해 모든 변수나 함수는 안에서 밖으로 찾는다. 그래서 log()함수 안에 있는 name은 한단계 밖으로 나가 글로벌 변수인 name = 'zero'를 찾아 반환한다.
참고자료